C# 使用DataGrid ItemDataBound事件检查值
我有一个DataGrid,其中数据源与SqlDataReader对象绑定:C# 使用DataGrid ItemDataBound事件检查值,c#,asp.net,C#,Asp.net,我有一个DataGrid,其中数据源与SqlDataReader对象绑定: SqlDataReader areader = runner.Reader; dgSearchResults.DataSource = areader; dgSearchResults.DataBind(); 我已经为我的网格创建了一个ItemDataBound事件,我想检查一个特定列/单元格的值,当每个项都被绑定时,我可以启用/禁用一些标志 如何获取ItemDataBound上特定单元格“SvcID”的值
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
}
}
}
}
public void dgSearchResults\u ItemDataBound(对象发送方,DataGridItemEventArgs e)
{
if(ViewState[“SvcIDs”]!=null)
{
如果(如项目!=null)
{
var svcIds=(列表)ViewState[“svcIds”];
if(svcIds.Contains(Convert.ToInt32(**DataGrid-SvcID在这里**))
{
//TODO:启用/禁用某些图标
}
}
}
}
我以前使用过RowDataBound事件,但没有用于DataGrid控件,所需的步骤似乎有点不同
根据我的SvcIds(使用索引)列表检查我的DataGrid中列“SvcID”的值的代码是什么
谢谢很遗憾,您无法使用列名或数据绑定字段名为单元格集合编制索引 为此,您需要知道数据字段的索引(例如,在您的示例中为
SvcID
)并为行
对象编制索引。如果您使用的是AutogenerateColumns
,则索引将基于您从数据库查询的列的顺序
然后,您可以处理RowDataBound
事件,该事件具有类型为GridViewRowEventArgs
的事件参数,允许您访问DataGridView行实例。然后您可以执行以下操作:
string val= e.Row.Cells(index).Text;
很遗憾,您无法使用列名或数据绑定字段名为单元格集合编制索引 为此,您需要知道数据字段的索引(例如,在您的示例中为
SvcID
)并为行
对象编制索引。如果您使用的是AutogenerateColumns
,则索引将基于您从数据库查询的列的顺序
然后,您可以处理RowDataBound
事件,该事件具有类型为GridViewRowEventArgs
的事件参数,允许您访问DataGridView行实例。然后您可以执行以下操作:
string val= e.Row.Cells(index).Text;
您可以使用以下选项访问单元格:
e.Item.Cells[index].Text;
您可以使用以下选项访问单元格:
e.Item.Cells[index].Text;
如果文本位于第二个单元格中 前
e、 Item.Cells[2]。如果文本位于第二个单元格中,则显示文本 前
e、 项目.单元格[2].Text获取数据域的索引不是问题。但是,我没有访问e.Row.Cells的权限?e是您的事件参数。它是您过程的参数。那么“您没有访问权限”是什么意思呢?哦,我的错。。您可以使用
RowDataBound
事件,而不是获取数据域的索引不是问题。但是,我没有访问e.Row.Cells?e是你的事件参数。它是你过程的参数。那么“你没有访问权”是什么意思呢?哦,我的错。你可以使用RowDataBound
事件来代替它。谢谢。我本来希望.Text属性有一个列名,但实际上只要e.Item.ItemIndex>=0,它就有一个列值!谢谢。我实际上希望.Text属性有一个列名,但实际上只要e.Item.ItemIndex>=0,它就有一个列值!