2012-04-16 9 views
0

複数のページでGridViewの列名の名前を変更したいとします。これまでのところ、私は一度に1つずつ変更することができます。ここに私のコード:複数のページでGridViewの見出しテキストを変更するにはどうすればよいですか?

protected void Button1_Click(object sender, EventArgs e) 
{ 

    for (int i = 0; i < GridView1.Columns.Count; i++) 
    { 
     if (GridView1.Columns[i].HeaderText == TextBox1.Text) 
     { 
      GridView1.Columns[i].HeaderText = TextBox2.Text; 
     } 

    } 


} 

私は2つのテキストボックスとボタンがあります。ボタンをクリックすると、textbox1が取得され、textbox2で入力したその列の名前が変更されます。

私がやろうとしていること:複数のページがあり、そのヘッダーテキストを変更したいと思います。私はこれらのボタンとテキストボックスを各ページに追加したくありません。この関数を一度しか呼び出さず、すべてのページのHeaderTextを変更する方法はありますか?

ありがとうございます。

答えて

0

データベースに列名を送信して解決しました。私はPage_Loadのデータベースから新しいヘッダーテキストを取得します。 これは最適な解決策ではないことがわかっています。ページが読み込まれるたびにデータベースに接続するために時間がかかります。何もないよりマシ。 :)

データベースの一部:

try 
    { 
     con.Open(); 
     string[] _col = { }; // Enter here the column names 
     for (int i = 0; i < _col.Length; i++) 
     { 
      if (_col[i] == TextBox1.Text) 
      { 
       SqlCommand ins = new SqlCommand("insert into Kolon_Ismi_Degistirme (ind, newHeaderName) values (@ind, @newHeaderName)", con); 
       ins.Parameters.AddWithValue("@ind", i); 
       ins.Parameters.AddWithValue("@newHeaderName", TextBox2.Text); 
       ins.ExecuteNonQuery(); 
      } 
     } 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
    finally 
    { 
     con.Close(); 
    } 

をPage_Load部分

try 
    { 
     //Get new column name using database       
     con.Open(); 
     SqlCommand sel = new SqlCommand("select ind, newHeaderName from Kolon_Ismi_Degistirme", con); 
     reader = sel.ExecuteReader(); 
     while (reader.Read()) 
     { 
      GridView1.Columns[(int)reader["ind"] + 2].HeaderText = (string)reader["newHeaderName"]; 
     }     
    } 
    catch (global::System.Exception) 
    { 
     throw; 
    } 
    finally 
    { 
     reader.Close(); 
     con.Close(); 
    } 
関連する問題