如何获取与SqlDataSource绑定的gridview表的Headers / Column Name

时间:2013-12-17 05:28:45

标签: c# asp.net sql gridview

我想提取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)字段

1 个答案:

答案 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+",";
        }