Подтвердить что ты не робот

Изменить текст заголовка столбцов в GridView

У меня есть GridView, который я программно связываю с использованием кода С#. Проблема в том, что столбцы получают текст заголовка непосредственно из базы данных, что может показаться странным при представлении на веб-сайтах. В общем, я хотел бы изменить текст заголовка столбца, но программно. я уже пробовал следующее,

testGV.Columns[0].HeaderText = "Date";

а также

this.testGV.Columns[0].HeaderText = "Date";

кажется, не дает мне правильный результат.

4b9b3361

Ответ 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
        }
    }