我创建了一个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
时,它正在运行而没有例外。
答案 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
并以此方式修复错误。