我有一个DataGrid,数据源与SqlDataReader对象绑定:
SqlDataReader areader = runner.Reader;
dgSearchResults.DataSource = areader;
dgSearchResults.DataBind();
我为我的网格创建了一个ItemDataBound事件,我想检查每个项目绑定时特定列/单元格的值,以便启用/禁用某些标记。
如何在ItemDataBound上获取特定单元格“SvcID”的值?
这是我的代码:
public void dgSearchResults_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (ViewState["SvcIDs"] != null)
{
if (e.Item != null)
{
var svcIds = (List<int>) ViewState["SvcIDs"];
if (svcIds.Contains(Convert.ToInt32(**DataGrid SvcID Goes Here**))
{
//TODO: enable/disable some icons
}
}
}
}
我之前使用过RowDataBound事件但不是DataGrid控件,并且所需的步骤看起来有点不同。
在我的DataGrid中针对我的SvcIds(使用索引)列表检查列“SvcID”的值的代码是什么?
由于
答案 0 :(得分:3)
您可以使用以下方法访问单元格:
e.Item.Cells[index].Text;
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagriditemeventargs.item.aspx
答案 1 :(得分:1)
如果您的文字位于第二个单元格中。
离 e.Item.Cells [2]。文本
答案 2 :(得分:0)
不幸的是,您无法使用列名或数据绑定字段名称索引Cell集合。
为此,您需要知道数据字段的索引(例如,在您的情况下为SvcID
)并索引Row
对象。如果您使用的是AutogenerateColumns
,则索引将基于您从数据库中查询的列的顺序。
然后,您可以处理RowDataBound
事件,该事件具有类型为GridViewRowEventArgs
的事件参数,使您可以访问DataGridView行实例。然后你可以做这样的事情:
string val= e.Row.Cells(index).Text;