启用已禁用的RadGrid时出现异常

时间:2014-05-08 18:25:34

标签: c# asp.net radgrid

我创建了一个Control,其中包含一个带有RadGrid(DataGrid)和RadButton(myButton)的Panel。 当我单击Button时,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();
}

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

  

[GridException:请将ClientSettings.Selecting.AllowRowSelect设置为" True"开始使用GridClientSelectColumn。]

RadGrid包含GridClientSelectColumn

任何人都可以帮助我,我可以做些什么来防止这种异常? - 在第二次单击时调用myButton的EventHandler之前发生异常。

当我删除GridClientSelectColumn时,它正在运行而没有例外。

1 个答案:

答案 0 :(得分:0)

当您拥有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并以此方式修复错误。