Hello. I'm having problems with the rad grid latest demo and server side row selection. My events are properly picked up from the checkbox clicks but they don't stay checked. Even the demo code isn't working. This code has been placed inside a SalesLogix CRM page. All other functions appear to be working properly (sorting, filtering, binding, etc). I've tried this both inside and outisde the UpdatePanel. Am I doing something wrong here? There is already an ASP script manager on the page hence the use of a proxy. Help appreciated!
Managers
Markup
Codebehind
Managers
<telerik:RadAjaxManagerProxy ID="RadAM" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="LDCAccounts"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="LDCAccounts" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> <telerik:AjaxUpdatedControl ControlID="Literal1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManagerProxy><telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />Markup
<asp:UpdatePanel ID="ldcAccountPanel" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="Accounts" /> <asp:AsyncPostBackTrigger ControlID="RadGrid1" /> </Triggers> <ContentTemplate> <telerik:RadGrid ID="Accounts" Width="97%" AllowSorting="true" runat="server" PageSize="20" AllowMultiRowSelection="true" AllowFilteringByColumn="true" EnableLinqExpressions="true" AllowAutomaticInserts="false" OnInsertCommand="Accounts_RowAdding" OnNeedDataSource="Accounts_NeedData"> <MasterTableView Width="100%" Summary="Rad!" AutoGenerateColumns="false" AllowFilteringByColumn="true" CommandItemDisplay="Top" EditMode="InPlace" ClientDataKeyNames="Id,AccountNumber"> <CommandItemSettings ShowAddNewRecordButton="true" AddNewRecordText="Add" /> <Columns> <telerik:GridButtonColumn Text="Select" CommandName="Select /> <telerik:GridButtonColumn Text="Deselect" CommandName="Deselect" /> <telerik:GridTemplateColumn UniqueName="ChkColumn"> <HeaderTemplate> <asp:CheckBox ID="ChkAll" runat="server" OnCheckedChanged="Accounts_ToggleAll" AutoPostBack="true" /> </HeaderTemplate> <ItemTemplate> <asp:CheckBox ID="ChkOne" runat="server" OnCheckedChanged="Accounts_ToggleRow" AutoPostBack="false" /> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton" /> <telerik:GridBoundColumn DataField="Id" Visible="true" HeaderText="PK" ReadOnly="true" /> <telerik:GridBoundColumn DataField="Name" HeaderText="Name" CurrentFilterFunction="EqualTo" AutoPostBackOnFilter="true" /> <telerik:GridBoundColumn Datafield="AccountNumber" HeaderText ="Account #" DataType="System.String" /> <telerik:GridBoundColumn Datafield="Address1" HeaderText = "Address1" /> <telerik:GridBoundColumn Datafield="Address2" HeaderText = "Address2" /> <telerik:GridBoundColumn Datafield="City" HeaderText = "City" DataType="System.String" /> <telerik:GridBoundColumn Datafield="State" headertext = "State" /> <telerik:GridBoundColumn Datafield="Postalcode" headertext = "Zip" /> </Columns> </MasterTableView> <ClientSettings EnableRowHoverStyle="true" /> <PagerStyle Mode="NextPrevAndNumeric" /> </telerik:RadGrid> <asp:CheckBox ID="ChkTest" runat="server" OnCheckedChanged="ChkTest_Click" AutoPostBack="true" /> <asp:Button ID="Test" runat="server" OnClick="Accounts_Test" /> <asp:Literal ID="Literal1" runat="server" /> <telerik:RadGrid id="RadGrid1" OnItemCreated="RadGrid1_ItemCreated" OnPreRender="RadGrid1_PreRender" ShowStatusBar="true" runat="server" OnNeedDataSource="RadGrid1_NeedData" AllowPaging="True" AllowSorting="True" AllowMultiRowSelection="True"> <MasterTableView PageSize="10"> <Columns> <telerik:GridButtonColumn Text="Select" CommandName="Select"> </telerik:GridButtonColumn> <telerik:GridButtonColumn Text="Deselect" CommandName="Deselect"> </telerik:GridButtonColumn> <telerik:GridTemplateColumn UniqueName="CheckBoxTemplateColumn"> <HeaderTemplate> <asp:CheckBox id="headerChkbox" OnCheckedChanged="ToggleSelectedState" AutoPostBack="True" runat="server"></asp:CheckBox> </HeaderTemplate> <ItemTemplate> <asp:CheckBox id="CheckBox1" OnCheckedChanged="ToggleRowSelection" AutoPostBack="True" runat="server"></asp:CheckBox> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings EnableRowHoverStyle="true" /> <PagerStyle Mode="NumericPages"></PagerStyle> </telerik:RadGrid> </ContentTemplate></asp:UpdatePanel>Codebehind
protected void RadGrid1_NeedData(object sender, GridNeedDataSourceEventArgs e){ RadGrid1.DataSource = CurrentOpportunity.SEChannelPartners;}protected void ToggleRowSelection(object sender, EventArgs e){ ((sender as CheckBox).NamingContainer as GridItem).Selected = (sender as CheckBox).Checked;}protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e){ if (e.Item is GridDataItem) { e.Item.PreRender += new EventHandler(RadGrid1_ItemPreRender); }}private void RadGrid1_ItemPreRender(object sender, EventArgs e){ ((sender as GridDataItem)["CheckBoxTemplateColumn"].FindControl("CheckBox1") as CheckBox).Checked = (sender as GridDataItem).Selected;}protected void ToggleSelectedState(object sender, EventArgs e){ CheckBox headerCheckBox = (sender as CheckBox); foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items) { (dataItem.FindControl("CheckBox1") as CheckBox).Checked = headerCheckBox.Checked; dataItem.Selected = headerCheckBox.Checked; }}protected void Page_PreRender(object sender, EventArgs e){ Literal1.Text = String.Format("<h3 class=\"qsfSubtitle\">Selected rows count is: {0}</h3>", RadGrid1.SelectedItems.Count);}protected void RadGrid1_PreRender(object sender, EventArgs e){ RadGrid1.DataSource = (ICollection<MyAccountClass>)GetAccounts(); RadGrid1.DataBind(); GridHeaderItem headerItem = RadGrid1.MasterTableView.GetItems(GridItemType.Header)[0] as GridHeaderItem; (headerItem.FindControl("headerChkbox") as CheckBox).Checked = RadGrid1.SelectedItems.Count == RadGrid1.Items.Count;}