web-dev-qa-db-de.com

Ändern Sie den Kopfzeilentext von Spalten in einer GridView

Ich habe eine GridView, die ich programmgesteuert mit C # -Code binde .. Das Problem besteht darin, dass die Spalten ihre Kopfzeilentexte direkt aus der Datenbank erhalten, was bei der Darstellung auf Websites seltsam aussehen kann. Im Grunde möchte ich den Text der Spaltenüberschrift ändern, aber programmgesteuert . Ich habe bereits Folgendes versucht: 

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

und

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

scheint mir nicht das richtige Ergebnis zu geben.

24
Mana

Sie sollten dies im RowDataBound -Ereignis von GridView tun, das für jede GridViewRownach ausgelöst wird, nachdem es datengebunden wurde.

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

oder Sie können AutogenerateColumns auf false setzen und die Spalten deklarativ zu aspx hinzufügen:

<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>
45
Rango

Ich denke das funktioniert:

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

Sie können dies mit dem datarow-gebundenen Ereignis von gridview tun. Versuchen Sie das folgende Codebeispiel:

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

Weitere Informationen zur reihe datengebundenen Ereignisstudie Thsi ....

4
Ram Singh

Fügen Sie auf Ihrer asp.net-Seite das gridview hinzu

<asp:GridView ID="GridView1" onrowdatabound="GridView1_RowDataBound" >
</asp:GridView>

Erstellen Sie eine methodengeschützte Void-Methode mit dem Namen GridView1_RowDataBound in Ihrer c # -Klasse

wie

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

Alles sollte gut funktionieren.

1

Es ist besser, Zellen aus gridview anstelle von static/fix index zu finden, so dass kein Problem auftritt, wenn Sie Spalten in gridview hinzufügen oder entfernen.

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";
            }
        }
    }
}
0
Jitendra G2
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
        }
    }
0
JIYAUL MUSTAPHA