2014-10-17 61 views
0

我有一个GridView,它在数据绑定中将超链接添加到DataTable中的所有值。这是通过使用“GridViewRowEventArgs”功能实现的。但是在这里我必须使用循环中的列名,而我无法做到这一点。请帮我解决一下这个。使用GridViewRowEventArgs在循环中访问列名称

+0

这里是你的代码? – 2014-10-17 12:47:10

+0

“列名”在这里表示您绑定到“GridView”的“DataTable”的列名? – Bharadwaj 2014-10-17 12:53:39

+0

@Bharadwaj:我想他是指网格中列的HeaderText。数据源是一个不好的选择,因为它在回发时为空。 – 2014-10-17 13:06:36

回答

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