2

我有一个 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 控件,所需的步骤似乎有点不同。

根据我的 SvcIds(使用索引)列表检查 DataGrid 中“SvcID”列的值的代码是什么?

谢谢

4

3 回答 3

3

您可以使用以下内容访问单元格:

e.Item.Cells[index].Text;

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagriditemeventargs.item.aspx

于 2013-08-15T17:45:40.677 回答
1

如果您的文本在第二个单元格中。

例如 e.Item.Cells[2].Text

于 2013-08-15T17:47:07.323 回答
0

不幸的是,您不能使用列名或数据绑定字段名来索引 Cell 集合。

为此,您需要知道数据字段的索引(例如SvcID在您的情况下)并索引Row对象。如果您正在使用,AutogenerateColumns那么索引将基于您从数据库中查询的列的顺序。

然后您可以处理该RowDataBound事件,该事件具有类型的事件参数,GridViewRowEventArgs可让您访问 DataGridView 行实例。然后你可以做这样的事情:

string val= e.Row.Cells(index).Text;
于 2013-08-15T17:40:58.090 回答