取消选择上一个选定项目时,Telerik RadGrid不会触发OnSelectedIndexChanged

时间:2014-12-11 14:02:55

标签: c# asp.net .net telerik telerik-grid

我有一个显示一些奇怪行为的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
    }

当我选择了多个可见项时,每次选择或取消选择一行时都会触发事件,正如我所期望的那样。但是,如果网格中只有一个可见的选定项,并且我取消选中它,则不会触发该事件!这是为什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您描述的是RadGrid的预期行为。从客户端选择或取消选择项目时,将更新SelectedItems集合。在触发OnSelectedIndexChanged事件之前,在服务器上检查此集合。如果SelectedItems集合没有元素,则不会触发事件。

由于您已将EnablePostBackOnRowClick属性设置为true,因此每次单击行后都会执行回发。在这种情况下,您可以使用PreRender方法检查SelectedItems集合中的元素数量。当数字达到零时,您可以执行您想要实现的逻辑。