6

我正在使用一个基类来修改出现在我的 ASP.Net 页面上的任何 Telerik RadGrid 的行为。在基类中,我想对许多公共列执行某些操作(设置 Css、工具提示等),但并非每个公共列都存在于每个网格中。

在 ItemDataBound 事件中,我获得了 GridDataItem 的一个实例,而我又想获得对 GridDataItem 包含的一个或多个单元格的引用:

var cell = gridDataItem["ColumnUniqueName"]

问题是,如果命名列不存在,这会引发 GridException:

找不到绑定到列名“ColumnUniqueName”的单元格

有没有办法在引用它之前按名称测试列的存在,还是我使用 try catch 卡住了?

4

2 回答 2

6

将让我走上正确的道路:

var tableView = gridDataItem.OwnerTableView;
var gridColumn = tableView.Columns.FindByUniqueNameSafe(uniqueName);
if (gridColumn != null)
    {
        var cell = gridDataItem[gridColumn];
    ...
于 2013-11-08T00:40:22.233 回答
5

尝试使用 RenderColumns 集合:

protected void rgGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        bool found  = (from d in rgGrid.MasterTableView.RenderColumns select d).Any(d => d.UniqueName == "ColumnUniqueName");
    }
}
于 2013-11-07T21:01:15.253 回答