Изменить текст заголовка столбцов в GridView
У меня есть GridView, который я программно связываю с использованием кода С#. Проблема в том, что столбцы получают текст заголовка непосредственно из базы данных, что может показаться странным при представлении на веб-сайтах. В общем, я хотел бы изменить текст заголовка столбца, но программно. я уже пробовал следующее,
testGV.Columns[0].HeaderText = "Date";
а также
this.testGV.Columns[0].HeaderText = "Date";
кажется, не дает мне правильный результат.
Ответы
Ответ 1
Вы должны сделать это в событии GridView RowDataBound
, которое запускается для каждого GridViewRow
после, это было с привязкой к данным.
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "Date";
}
}
или вы можете установить AutogenerateColumns
на false
и объявить столбцы декларативно на aspx:
<asp:gridview id="GridView1"
onrowdatabound="GridView1_RowDataBound"
autogeneratecolumns="False"
emptydatatext="No data available."
runat="server">
<Columns>
<asp:BoundField DataField="DateField" HeaderText="Date"
SortExpression="DateField" />
</Columns>
</asp:gridview>
Ответ 2
Я думаю, это работает:
testGV.HeaderRow.Cells[0].Text="Date"
Ответ 3
Вы можете сделать это с помощью связанного события gridview datarow. попробуйте следующий образец кода:
protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "TiTle";
}
}
Подробнее о исследовании событий в базе данных строк Thsi....
Ответ 4
На странице asp.net добавьте gridview
<asp:GridView ID="GridView1" onrowdatabound="GridView1_RowDataBound" >
</asp:GridView>
Создайте метод защищенного метода void в вашем классе С# под названием GridView1_RowDataBound
а
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "HeaderText";
}
}
Все должно работать нормально.
Ответ 5
Лучше найти ячейки из gridview вместо статического/фиксированного индекса, чтобы не возникало никаких проблем при добавлении/удалении любых столбцов в gridview.
ASPX:
<asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:BoundField HeaderText="Date" DataField="CreatedDate" />
</Columns>
</asp:GridView>
CS:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (string.Compare(e.Row.Cells[i].Text, "Date", true) == 0)
{
e.Row.Cells[i].Text = "Created Date";
}
}
}
}
Ответ 6
protected void grdDis_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
#region Dynamically Show gridView header From data base
getAllheaderName();/*To get all Allowences master headerName*/
TextBox txt_Days = (TextBox)grdDis.HeaderRow.FindControl("txtDays");
txt_Days.Text = hidMonthsDays.Value;
#endregion
}
}