我想在多个页面中重命名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?
提前谢谢。
答案 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();
}