我想提取gridview的列名称,并使用下拉列表绑定这些列名称以生成过滤器模板。我在面对页面加载事件中从gridview获取列名时面临的挑战很小。下面是我正在尝试的错误代码。
和“索引超出范围。必须是非负数且小于集合的大小。 参数名称:索引“
Response.Write(GridView1.Rows[0].Cells[0].Text.ToString());
Response.Write(GridView1.Rows[0].Cells[1].Text.ToString());
Response.Write(GridView1.Rows[0].Cells[2].Text.ToString());
Response.Write(GridView1.Rows[0].Cells[3].Text.ToString());
上面的代码不起作用,如果它可以工作,我可以在每个列的foreach循环中添加它
注意:gridview
中也有一些隐藏(可见= false)字段答案 0 :(得分:0)
您可以通过两种方式获取列名称(至少):
1 - 使用数据网格本身:
//assuming you have a dataset with 1 datatable
ds.Tables.Add(dt);
this.GridView1.DataSource=ds;
DataBind();
//after binding is complete
this.headerNames.Text="";
foreach (var c in GridView1.HeaderRow.Cells)
{
this.headerNames.Text += (((System.Web.UI.WebControls.DataControlFieldCell)(c)).ContainingField).HeaderText+",";
}
2 - 使用绑定源(在您的情况下是数据表)
//After you load the datatable from the data source
this.headerNames.Text = "";
foreach (DataColumn dc in dt.Columns)
{
this.headerNames.Text += dc.ColumnName+",";
}