2013-12-17 71 views
0

我想提取gridview的列名並使用下拉列表將這些列名綁定到一個過濾器模板。我在頁面加載事件中從gridview獲取列名時遇到了一些挑戰。以下是我正在嘗試的錯誤代碼。如何獲取與SqlDataSource綁定的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循環添加此對每列

注:有一些隱藏的(visible = FALSE)領域也是在GridView控件

+0

你的DGV綁定到一個DataTable? – NoChance

+0

這是asp.net網格視圖: Vicky

+0

但是什麼是數據源? – NoChance

回答

0

你可以在2種方式(至少)列名:

1 - 使用DataGrid本身:

  //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+","; 
     } 
相關問題