启用禁用RadGrid时出现异常

本文关键字:异常 RadGrid 启用 | 更新日期: 2023-09-27 18:02:20

我创建了一个控件,其中包含一个带有RadGrid (DataGrid)和RadButton (myButton)的面板。当我点击按钮时,RadGrid将被禁用或启用:

myButton.Click += (sender, args) => {
    if (!this.DataGrid.Enabled) {
        this.DataGrid.Enabled = true;
        this.DataGrid.ClientSettings.EnablePostBackOnRowClick = true;
        this.DataGrid.ClientSettings.Resizing.AllowColumnResize = true;
        this.DataGrid.ClientSettings.Selecting.AllowRowSelect = true;
        this.DataGrid.ClientSettings.AllowKeyboardNavigation = true;
    } else {
        this.DataGrid.Enabled = false;
        this.DataGrid.ClientSettings.EnablePostBackOnRowClick = false;
        this.DataGrid.ClientSettings.Resizing.AllowColumnResize = false;
        this.DataGrid.ClientSettings.Selecting.AllowRowSelect = false;
        this.DataGrid.ClientSettings.AllowKeyboardNavigation = false;
    }
    this.DataGrid.Rebind();
}

禁用工作正常。但是当我第二次点击时,我将得到一个Exception:

[GridException:请将clientsettings . selection . allowrowselect设置为"True"以开始使用GridClientSelectColumn.]

RadGrid包含一个GridClientSelectColumn

有没有人可以帮助我,我能做些什么来防止这个异常?-异常发生在myButton的EventHandler将在第二次点击时调用之前。

当我删除GridClientSelectColumn,它是工作没有例外。

启用禁用RadGrid时出现异常

当您有GridClientSelectColumn时就会发生这种情况。默认情况下,当单击一行时,RadGrid会触发服务器端事件,因此它必须知道您希望在客户端选择这些行。

客户端设置参数如下:

<ClientSettings>
  <Selecting AllowRowSelect="True"></Selecting>
</ClientSettings>

它们适合在RadGrid声明的根XML中。为了便于阅读,我把它们放在列的前面,但是它们也可以放在列的后面。

注意<ClientSettings><telerik:GridClientSelectColumn...

<telerik:RadGrid ID="mygrid" 
                 runat="server" AutoGenerateColumns="false" 
                 AllowSorting="true"
                 OnNeedDataSource="mygrid_NeedDataSource"
                 AllowFilteringByColumn="False">
  <ClientSettings>
    <Selecting AllowRowSelect="True"></Selecting>
  </ClientSettings>
  <MasterTableView DataKeyNames="myColumn" Name="Header">
    <Columns>
      <telerik:GridClientSelectColumn ItemStyle-Width="25px" />
      <telerik:GridBoundColumn DataField="myColumn" HeaderText="My Column" />
    </Columns>
  </MasterTableView>
</telerik:RadGrid>

或者,正如您所发现的,您可以删除GridClientSelectColumn并以这种方式修复错误。