or
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> |
<%@ Register Assembly="Telerik.Web.UI, Version=2011.2.712.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"></asp:Content><asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> Content above the TabStrip!! <telerik:RadTabStrip ID="RadTabStrip1" runat="server" Skin="Vista" MultiPageID="RadMultiPage1" SelectedIndex="0" Align="Justify" ReorderTabsOnSelect="true" Width="347px"> <Tabs> <telerik:RadTab Text="General"> </telerik:RadTab> <telerik:RadTab Text="Tools"> </telerik:RadTab> <telerik:RadTab Text="Hardware"> </telerik:RadTab> </Tabs> </telerik:RadTabStrip> <telerik:RadMultiPage ID="RadMultiPage1" runat="server" SelectedIndex="0" CssClass="pageView" Width="345px"> <telerik:RadPageView ID="RadPageView1" runat="server"> First content. </telerik:RadPageView> <telerik:RadPageView ID="RadPageView2" runat="server"> Second content. </telerik:RadPageView> <telerik:RadPageView ID="RadPageView3" runat="server"> Third content. </telerik:RadPageView> </telerik:RadMultiPage></asp:Content><asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">Application Page</asp:Content><asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >My Application Page</asp:Content>