【问题标题】:Telerik RadGrid not firing OnSelectedIndexChanged when un-selecting last selected item取消选择最后一个选定项目时 Telerik RadGrid 未触发 OnSelectedIndexChanged
【发布时间】:2014-12-11 14:02:54
【问题描述】:

我有一个 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
    }

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

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我尝试创建一个 OnPreRender 事件,但单击一行时它不会被触发。我还有什么需要设置的吗?
    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多