web-dev-qa-db-fra.com

Modifier le texte d'en-tête des colonnes dans un GridView

J'ai un GridView que je lie par programmation en utilisant le code c # .. Le problème est que les colonnes obtiennent leurs textes d'en-tête directement à partir de la base de données, ce qui peut paraître étrange quand il est présenté sur des sites Web. Donc, fondamentalement, je voudrais modifier le texte de l'en-tête de la colonne, mais par programmation . J'ai déjà essayé ce qui suit, 

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

et

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

ne semble pas me donner le résultat correct.

24
Mana

Vous devriez le faire dans RowDataBound event de GridView, qui est déclenché pour chaque GridViewRowaprès qu'il était associé à la date.

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

ou vous pouvez définir AutogenerateColumns à false et ajouter les colonnes de manière déclarative sur 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>
45
Rango

Je pense que cela fonctionne:

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

Vous pouvez le faire avec l’événement lié à datarow de gridview. essayez l'exemple de code suivant:

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

Pour plus de détails sur l’étude des événements liés aux données de ligne Thsi ....

4
Ram Singh

Sur votre page asp.net, ajoutez le gridview

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

Créez une méthode void protected avec méthode dans votre classe c # appelée GridView1_RowDataBound

comme

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

Tout devrait bien fonctionner.

1
Amir Md Amiruzzaman

Il est préférable de rechercher des cellules dans gridview au lieu de static/fix index afin qu’il ne génère aucun problème chaque fois que vous ajoutez/supprimez des colonnes dans 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";
            }
        }
    }
}
0
Jitendra G2