如何在多个页面中更改GridView的HeaderText?

时间:2012-04-16 08:23:31

标签: gridview headertext

我想在多个页面中重命名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;
        }

    }


}

在设计视图中,我有两个文本框和一个按钮。当我单击按钮时,它获取textbox1并重命名我在textbox2中键入的列。

我想做什么:我有多个页面,我想更改他们的列HeaderText。我不想将这些按钮和文本框添加到每个页面。有没有办法只调用一次这个函数并更改所有页面中的HeaderTexts?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我通过将列名发送到数据库来解决它,并从Page_Load中的数据库中获取新的headertext。 我知道这不是最好的解决方案,因为每次页面加载都会连接到数据库,因此速度很慢。有总比没有好。 :)

数据库部分:

 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();
    }