Telerik RadGrid 未触发 OnSelectedIndex取消选择最后一个选定项时已更改

本文关键字:最后一个 选择 RadGrid 取消 OnSelectedIndex Telerik | 更新日期: 2023-09-27 18:33:55

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

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

感谢您的帮助!

Telerik RadGrid 未触发 OnSelectedIndex取消选择最后一个选定项时已更改

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

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