我有一个显示一些奇怪行为的Telerik RadGrid。网格的定义如下:
<telerik:RadGrid ID="RadGrid1" Width="100%" runat="server"
AllowSorting="True"
AllowPaging="true"
AllowMultiRowSelection="true"
OnNeedDataSource="RadGrid1_NeedDataSource"
OnDataBound="RadGrid1_DataBound"
OnItemDataBound="RadGrid1_ItemDataBound"
BorderWidth="0"
OnSortCommand="RadGrid1_SetVisibleTrue"
OnPageSizeChanged="RadGrid1_SetVisibleTrue"
OnPageIndexChanged="RadGrid1_SetVisibleTrue"
OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged"
AutoGenerateColumns="False">
<ClientSettings EnablePostBackOnRowClick="true">
<Selecting AllowRowSelect="true" />
</ClientSettings>
<MasterTableView DataKeyNames="LabID, MachineName, PointID, MachCond, LubCond, Lubricant, CustReview, CustReviewDte, MachineID" ClientDataKeyNames="MachineName" AllowMultiColumnSorting="true">
<SortExpressions>
<telerik:GridSortExpression FieldName="MachineName" SortOrder="Ascending" />
<telerik:GridSortExpression FieldName="MachineNumber" SortOrder="Ascending" />
</SortExpressions>
<Columns>.........</Columns>
</MasterTableView>
</telerik:RadGrid>
我的OnSelectedIndexChanged
事件在后面的代码中定义:
protected void RadGrid1_SelectedIndexChanged(object sender, EventArgs e)
{
//Do stuff
}
当我选择了多个可见项时,每次选择或取消选择一行时都会触发事件,正如我所期望的那样。但是,如果网格中只有一个可见的选定项,并且我取消选中它,则不会触发该事件!这是为什么?
感谢您的帮助!
答案 0 :(得分:1)
您描述的是RadGrid的预期行为。从客户端选择或取消选择项目时,将更新SelectedItems集合。在触发OnSelectedIndexChanged事件之前,在服务器上检查此集合。如果SelectedItems集合没有元素,则不会触发事件。
由于您已将EnablePostBackOnRowClick属性设置为true,因此每次单击行后都会执行回发。在这种情况下,您可以使用PreRender方法检查SelectedItems集合中的元素数量。当数字达到零时,您可以执行您想要实现的逻辑。