c# - obtener - Cambiar el texto del encabezado de las columnas en un GridView



como cambiar el tamaño de las columnas de un datagridview c# (4)

Tengo un GridView que yo vinculo mediante programación utilizando el código c #. El problema es que las columnas obtienen sus textos de encabezado directamente de la base de datos, lo que puede parecer extraño cuando se presentan en sitios web. Básicamente, me gustaría modificar el texto del encabezado de la columna, pero programáticamente. ya he intentado lo siguiente,

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

y

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

No parece darme el resultado correcto.

https://src-bin.com


Answer #1

Creo que esto funciona:

 testGV.HeaderRow.Cells[0].Text="Date"

Answer #2

Debería hacer eso en el evento RowDataBound de GridView que se activa para cada GridViewRow después de que haya sido enlazado.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[0].Text = "Date";
    }
}

o puede configurar AutogenerateColumns en false y agregar las columnas declarativamente en 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>

Answer #3

Es mejor encontrar celdas desde gridview en lugar de un índice estático / fijo para que no genere ningún problema cada vez que agregue / elimine columnas en 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";
            }
        }
    }
}

Answer #4

Puedes hacerlo con el evento enlazado datarow de gridview. Prueba el siguiente ejemplo de código:

protected void grv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "TiTle";
}
}

Para más detalles sobre el estudio de eventos de fila de datos RowDataBound





gridview