我正在使用基类来修改ASP.Net页面上显示的任何Telerik RadGrid的行为。在基类中,我想在许多常见列上执行某些操作(设置Css,工具提示等),但不是每个网格中都存在每个公共列。
在ItemDataBound事件中,我正在获取GridDataItem的实例,反过来我想获得对GridDataItem的一个或多个包含单元格的引用:
var cell = gridDataItem["ColumnUniqueName"]
问题是,如果命名列不存在,则会抛出GridException:
找不到绑定到列名“ColumnUniqueName”
的单元格有没有办法在引用列之前按名称测试列的存在,或者是我 卡住使用try catch?
答案 0 :(得分:6)
会让我走上正确的道路:
var tableView = gridDataItem.OwnerTableView;
var gridColumn = tableView.Columns.FindByUniqueNameSafe(uniqueName);
if (gridColumn != null)
{
var cell = gridDataItem[gridColumn];
...
答案 1 :(得分: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");
}
}