使用DataGrid ItemDataBound事件来检查值

时间:2013-08-15 17:35:59

标签: c# asp.net

我有一个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”的值的代码是什么?

由于

3 个答案:

答案 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;