我有一个GridView
,它在数据绑定中将超链接添加到DataTable
中的所有值。这是通过使用“GridViewRowEventArgs”功能实现的。但是在这里我必须使用循环中的列名,而我无法做到这一点。请帮我解决一下这个。使用GridViewRowEventArgs在循环中访问列名称
0
A
回答
1
你可以使用这个扩展:
public static int GetColumnIndex(this GridView grid, string columnName)
{
return grid.Columns.Cast<DataControlField>()
.Select((c, index) => new { Column = c, Index = index })
.Where(x => x.Column.HeaderText.Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
.Select(x => x.Index)
.DefaultIfEmpty(-1)
.First();
}
然后你就可以以这种方式使用它:
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView grid = (GridView)sender;
int indexOfColumn = grid.GetColumnIndex("ColumnName");
// for example to access the correct index in e.Row.Cells
e.Row.Cells[indexOfColumn].Text = "Hello";
}
}
+0
thnx评论:) – RaaMee 2014-10-20 01:27:05
+0
那么我的回答没有帮助吗?你的问题解决了吗?如果是这样,答案帮助你可能会考虑接受它。不用谢。 – 2014-10-20 05:20:37
这里是你的代码? – 2014-10-17 12:47:10
“列名”在这里表示您绑定到“GridView”的“DataTable”的列名? – Bharadwaj 2014-10-17 12:53:39
@Bharadwaj:我想他是指网格中列的HeaderText。数据源是一个不好的选择,因为它在回发时为空。 – 2014-10-17 13:06:36