or
protected void Page_Load(object sender, EventArgs e) { ObjectResult<SapDocuments> objectSapDocs; if (!this.IsPostBack) { this._presenter.OnViewInitialized(); string user = Page.User.Identity.Name.Substring(Page.User.Identity.Name.IndexOf("\\") + 1); EscalonamentoFacturasEntities objectContx = new EscalonamentoFacturasEntities(); objectSapDocs = objectContx.ShowUnprocessedInvoices(user); List<SapDocuments> listSapDocuments = new List<SapDocuments>(); foreach (var item in objectSapDocs) { listSapDocuments.Add(item); } ViewState["Data"] = listSapDocuments; } this._presenter.OnViewLoaded(); if (ViewState["Data"] != null) { RadGrid1.DataSource = (List<SapDocuments>)ViewState["Data"]; } else { RadGrid1.DataSource = null; } //RadGrid1.DataBind(); } [CreateNew] public InvoicesScalePresenter Presenter { set { this._presenter = value; this._presenter.View = this; } } protected void ShowProcessed_Click(object sender, EventArgs e) { ObjectResult<SapDocuments> objectSapDocs; string user = Page.User.Identity.Name.Substring(Page.User.Identity.Name.IndexOf("\\") + 1); EscalonamentoFacturasEntities objectContx = new EscalonamentoFacturasEntities(); objectSapDocs = objectContx.ShowProcessedInvoices(user); List<SapDocuments> listSapDocuments = new List<SapDocuments>(); foreach (var item in objectSapDocs) { listSapDocuments.Add(item); } ViewState["Data"] = listSapDocuments; if (ViewState["Data"] != null) { RadGrid1.DataSource = (List<SapDocuments>)ViewState["Data"]; } else { RadGrid1.DataSource = null; } } ....<telerik:RadGrid ID="RadGrid1" runat="server" GridLines="None" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" Width="97%" enableajax="True" AllowFilteringByColumn="True" ShowFooter="True" Skin="Black" OnItemCommand="RadGrid1_ItemCommand" OnGridExporting="RadGrid1_GridExporting" AllowMultiRowSelection="True"> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> <ClientSettings AllowColumnsReorder="True" ReorderColumnsOnClient="True" EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="True" /> </ClientSettings> <MasterTableView DataKeyNames="SequencialNumber" Width="100%" CommandItemSettings-ShowExportToCsvButton="True" CommandItemSettings-ShowAddNewRecordButton="false" CommandItemDisplay="Top"> <Columns> <telerik:GridBoundColumn DataField="SequencialNumber" HeaderText="SequencialNumber" UniqueName="SequencialNumber" SortExpression="SequencialNumber"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Priorities.Priority" HeaderText="Priority" UniqueName="Priority" FilterControlAltText="Filter Priority column" SortExpression="Priority" DataType="System.Int32"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Staging.Process" HeaderText="Staging" UniqueName="Process" SortExpression="Process" FilterControlAltText="Filter Process column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="SupplierCode" HeaderText="SupplierCode" UniqueName="SupplierCode" SortExpression="SupplierCode" FilterControlAltText="Filter SupplierCode column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="MessageStatus" HeaderText="MessageStatus" UniqueName="MessageStatus" SortExpression="MessageStatus" FilterControlAltText="Filter MessageStatus column"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="DocumentType" HeaderText="DocumentType" UniqueName="DocumentType" FilterControlAltText="Filter DocumentType column" SortExpression="DocumentType"> </telerik:GridBoundColumn> <telerik:GridDateTimeColumn UniqueName="InvoiceCreationDate" DataField="InvoiceCreationDate" HeaderText="InvoiceCreationDate" FilterControlAltText="Filter InvoiceCreationDate column" SortExpression="InvoiceCreationDate"> <FilterTemplate> <telerik:RadDatePicker ID="RadDatePicker1" runat="server"> </telerik:RadDatePicker> </FilterTemplate> </telerik:GridDateTimeColumn> <telerik:GridBoundColumn DataField="SupplierVatNumber" FilterControlAltText="Filter SupplierVatNumber column" HeaderText="SupplierVatNumber" SortExpression="SupplierVatNumber" UniqueName="SupplierVatNumber"> </telerik:GridBoundColumn> </Columns> <ExpandCollapseColumn Visible="False"> <HeaderStyle Width="19px"></HeaderStyle> </ExpandCollapseColumn> <RowIndicatorColumn Visible="False"> <HeaderStyle Width="20px" /> </RowIndicatorColumn> </MasterTableView> <FilterMenu EnableImageSprites="False"> </FilterMenu> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> </HeaderContextMenu> </telerik:RadGrid>Hi All,
I am using radajaxpanel around the radgrid. I have a column of linkbuttons inside the radgrid. whenever user clicks on the linkbutton, I do some calculations on the server side and raise an event to another page to pass that calculated value. The raising of the event works if I remove the radAjaxPanel, if I put the panel back then raising of the event does not work. I was wondering if there is any work around for that. I really have to raise the event.
below is my code
<telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel_ID" LoadingPanelID="RadAjaxLoadingPanel1" > <telerik:RadPanelBar ID="RadPanelBar1" runat="server" Width="1500px" BackColor="#E6E6E6" ExpandMode="MultipleExpandedItems"> <Items> <telerik:RadPanelItem runat="server" Text="ID Picker" Expanded="true"> <Items> <telerik:RadPanelItem Text="" Expanded="true"> <ItemTemplate> <table> <tr> <td> <telerik:RadGrid ID="RadGrid_IDPicker" AllowSorting="True" PageSize="100" AllowPaging="True" runat="server" GridLines="None" OnPageIndexChanged="RadGrid_IDPicker_PageIndexChanged" OnPageSizeChanged="RadGrid_IDPicker_PageSizeChanged" Width="1500px" Visible="false" > <MasterTableView RetrieveAllDataFields="true" AutoGenerateColumns="false" DataKeyNames="ID"> <Columns> <telerik:GridTemplateColumn UniqueName="TemplateLinkColumn" AllowFiltering="false" HeaderText="ID"> <ItemTemplate> <asp:LinkButton ID="ID_Link" runat="server" OnClick="ID_Link_Click" Text='<%#Bind("ID") %>' ></asp:LinkButton> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="TAG"> <ItemTemplate> <asp:Label ID="lblNumber" runat="server" Text='<%#Bind("Number") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <PagerStyle Mode="NextPrevAndNumeric" /> </telerik:RadGrid> </td> </tr> </table> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> </Items> </telerik:RadPanelBar> </telerik:RadAjaxPanel> The code in the server side is
public delegate void ID_Selection(String strValue); public event ID_Selection IDEventHandler; protected void ID_Link_Click(object sender, EventArgs e) { if (IDEventHandler != null) { IDEventHandler("Testvalue"); } function OnClientAddedHandler(sender, eventArgs) { var inputRow = eventArgs.get_row(); var uList = inputRow.parentNode; var count = 0; // add a new row for the description field newRow = document.createElement("li"); count++; uList.insertBefore(newRow, inputRow); var label = document.createElement("span"); label.innerHTML = "Description: "; label.style.fontSize = 12; label.id = label.name = sender.getID("DescLabel"); input = document.createElement("input"); input.type = "text"; input.id = input.name = sender.getID("DescValue"); newRow.appendChild(label); newRow.appendChild(input); }<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="FileExplorerInRadWindowWithMaster.WebForm1" %><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"><telerik:RadCodeBlock ID="RD1" runat="server"><script type="text/javascript"> function btnSalesContract_FileLink_Click(sender, args) { var rwSalesContract_ContractFileExplorer = $find('<%=rwSalesContract_ContractFileExplorer.ClientID %>'); rwSalesContract_ContractFileExplorer.setUrl('FileDialog2.aspx'); rwSalesContract_ContractFileExplorer.show(); }</script></telerik:RadCodeBlock> <telerik:RadButton ID="btnSalesContract_FileLink" runat="server" Text="View Contract Files" OnClientClicked="btnSalesContract_FileLink_Click" ToolTip="Click to view this contract's files in Documentum" Icon-PrimaryIconCssClass="rbEdit" UseSubmitBehavior="false" autopostback="false" /><telerik:RadWindow ID="rwSalesContract_ContractFileExplorer" runat="server" ClientIDMode="Static" Modal="true" AutoSize="true" Behaviors="Close" Style="z-index: 2000" ></telerik:RadWindow></asp:Content><%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="FileDialog.aspx.cs" Inherits="FileExplorerInRadWindowWithMaster.FileDialog" %><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <telerik:RadFileExplorer ID="RadFileExplorer1" runat="server"> <Configuration ViewPaths="~/Files" /> </telerik:RadFileExplorer></asp:Content><%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="FileExplorerInRadWindowWithMaster.Site1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"> <title></title> <telerik:RadStyleSheetManager id="RadStyleSheetManager1" runat="server" /></head><body> <form id="form2" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <%--Needed for JavaScript IntelliSense in VS2010--%> <%--For VS2008 replace RadScriptManager with ScriptManager--%> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </telerik:RadScriptManager> <script type="text/javascript"> //Put your JavaScript code here. </script> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> </telerik:RadAjaxManager> <telerik:RadSkinManager ID="RadSkinManager1" Runat="server" Skin="Default"> </telerik:RadSkinManager> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </form></body></html>I have a template definition as below:
| public class BoundTemplate : System.Web.UI.ITemplate |
| { |
| public ListItemType templateType; |
| public string columnName, dataType, timeZone, sortExpression; |
| public bool convertTZ; |
| public event CommandEventHandler OnSorting; |
| public BoundTemplate(ListItemType type, string colName, string sortExpression) |
| { |
| templateType = type; |
| this.columnName = colName; |
| this.sortExpression = sortExpression; |
| } |
| public BoundTemplate(ListItemType type, string colName, CommandEventHandler sortHandler, string sortExpression) |
| { |
| templateType = type; |
| this.columnName = colName; |
| this.OnSorting = sortHandler; |
| this.sortExpression = sortExpression; |
| } |
| public BoundTemplate(ListItemType type, string colName, string dataType, string timeZone, bool convertTZ) |
| { |
| templateType = type; |
| this.columnName = colName; |
| this.dataType = dataType; |
| this.timeZone = timeZone; |
| this.convertTZ = convertTZ; |
| } |
| public void InstantiateIn(Control container) |
| { |
| switch (templateType) |
| { |
| case ListItemType.Header: |
| if (OnSorting != null) |
| { |
| LinkButton lb = new LinkButton(); |
| lb.Text = columnName; |
| //lb.CommandName = "Sort"; |
| lb.Command += new CommandEventHandler(lb_Command); |
| lb.CommandArgument = sortExpression; |
| container.Controls.Add(lb); |
| } |
| else |
| { |
| Label lbl = new Label(); |
| lbl.Text = columnName; |
| container.Controls.Add(lbl); |
| } |
| break; |
| case ListItemType.Item: |
| case ListItemType.AlternatingItem: |
| Label dataLabel = new Label(); |
| dataLabel.Text = columnName; |
| container.Controls.Add(dataLabel); |
| dataLabel.DataBinding += new EventHandler(Item_DataBinding); |
| break; |
| case ListItemType.Footer: |
| break; |
| } |
| } |
| public void lb_Command(object sender, CommandEventArgs e) |
| { |
| if (OnSorting == null) |
| throw new Exception("Sort handler is not hooked up."); |
| OnSorting(sender, e); |
| } |
| } |
In the code behind I add the control to the grid dynamically as below:
| GridTemplateColumn tfield = new GridTemplateColumn(); |
| BoundTemplate headerTemplate = new BoundTemplate(ListItemType.Header, displayName, fieldName); |
| if (field.SelectSingleNode("@sortable") != null && field.SelectSingleNode("@sortable").Value == "true") |
| headerTemplate.OnSorting += new CommandEventHandler(SortGrid4TemplateFields); |
| tfield.HeaderTemplate = headerTemplate; |
| tfield.ItemTemplate = new BoundTemplate(ListItemType.Item, columnName, dataType, timeZone, convertTZ); |
| tfield.ItemStyle.HorizontalAlign = SetAlignment(alignment); |
| tfield.DataField = columnName; |
| tfield.UniqueName = fieldName; |
| //tfield.DataType = Type.GetType(dataType); |
| tfield.SortExpression = fieldName; |
| //tfield.FilterListOptions = GridFilterListOptions.VaryByDataType; |
| RadGrid1.MasterTableView.Columns.Add(tfield); |
And finally, i have set the grid properties as below:
| <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="true" AllowSorting="true" AllowPaging="true" PageSize="10" OnSortCommand="CustomSort"> |
| <MasterTableView AutoGenerateColumns="false" AllowCustomSorting="true"></MasterTableView> </telerik:RadGrid> |