Как изменить HeaderText GridView на нескольких страницах?
Я хочу переименовать имена столбцов в 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 ответ
Я решил это, отправив имя столбца в базу данных, и я получил новый текст заголовка из базы данных в 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();
}
часть загрузки страницы
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();
}