2016-04-01 20 views
0

グリッドビューがありますが、現在は1つのヘッダーしか設定されていません。私がしたいのは、ユーザーの数に基づいてテーブルの最後にある他の列の横に新しいヘッダーを追加することです。ヘッダーと列をGridViewに動的に追加する

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     GridView1.UseAccessibleHeader = true; 
     GridView1.AutoGenerateColumns = false; 
     int i = 6; 
     string constr = ConfigurationManager.ConnectionStrings["CMT"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       cmd.CommandText = "SELECT * FROM [user]"; 
       cmd.Connection = conn; 
       conn.Open(); 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
       { 
        while (sdr.Read()) 
        {         
         GridView1.Columns[6].HeaderText = sdr["user_first_name"].ToString(); 
         break; 
        } 
       } 
       conn.Close(); 
      } 
     } 
    } 
} 
+0

このようなことをしようとしていますか? http://forums.asp.net/t/1788238.aspx?Add+header+column+to+dynamic+header+on+GridView –

+0

同様ですが、これはヘッダーの下に新しい行を追加しています。私は自分の他のヘッダーの横に私のSQLステートメントを介してヘッダーを追加しようとしています。 –

答えて

0

データをバインドする前に、TemplateField列をGridViewに追加できます。これはPage_Loadイベントハンドラで行うことができます:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     using (SqlConnection conn = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       cmd.CommandText = "SELECT * FROM [user]"; 
       cmd.Connection = conn; 
       conn.Open(); 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
       { 
        while (sdr.Read()) 
        { 
         TemplateField field = new TemplateField(); 
         field.HeaderText = sdr["user_first_name"].ToString(); 
         field.HeaderStyle.Width = Unit.Pixel(80); 
         GridView1.Columns.Add(field); 
        } 
       } 
       conn.Close(); 
      } 
     } 
    } 
} 
関連する問題