0

複数のページで GridView の列名を変更したい。これまでのところ、一度に 1 つずつ変更できます。これが私のコードです:

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 つのテキスト ボックスと 1 つのボタンがあります。ボタンをクリックすると、textbox1 が取得され、textbox2 に入力した列の名前が変更されます。

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

前もって感謝します。

4

1 に答える 1

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();
    }
于 2012-05-05T13:30:08.250 に答える