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;
}