/ / Accès à la propriété Header Text de GridView TemplateField dans le code derrière lorsqu'elle est définie à partir d'un modèle d'en-tête - c #, asp.net, gridview

Accès à la propriété Header Text de GridView TemplateField dans le code derrière lorsqu'elle est définie à partir d'un modèle d'en-tête - c #, asp.net, gridview

J'ai un GridView dans un asp.Net application, où le texte d'en-tête d'un champ de modèle est défini dans le modèle d'en-tête du champ, sous forme d'étiquette (où il provient du fichier de ressources). Ci-dessous le code

<asp:GridView ID="gridView" ClientIDMode="Static" runat="server" AutoGenerateColumns="False" meta:resourcekey="grdViewResource">
<Columns>
<asp:TemplateField meta:resourcekey="TemplateFieldResource1">
<HeaderTemplate>
<asp:Label ID="lblNameHeader" Text="Name" runat="server" meta:resourcekey="lblNameHeaderResource1"/>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblNameValue" Text="<%# Eval("Name") %>"/>
</ItemTemplate>
</Columns>
</asp:GridView>

Dans le code derrière, j'essaie d'accéder au texte d'en-tête défini sur la colonne, comme ceci

var headerText = gridView.Columns[0].HeaderText;

Mais la valeur arrive vide et je ne suis pas en mesure de la récupérer également à partir de la propriété "HeaderTemplate" de gridView.Columns.

Aidez-moi, s'il vous plaît.

Réponses:

1 pour la réponse № 1

Vous avez plusieurs problèmes avec votre code.

Il manque une fermeture </asp:TemplateField>. Votre asp:Label manque un runat="server" attribut.

Si vous souhaitez utiliser la propriété .HeaderText, cela devrait être votre balisage:

<asp:GridView ID="gridView" ClientIDMode="Static" runat="server" AutoGenerateColumns="False" meta:resourcekey="grdViewResource">
<Columns>
<asp:TemplateField meta:resourcekey="TemplateFieldResource1" HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblNameValue" Text="<%# Eval("Name") %>" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Si vous souhaitez utiliser un modèle HeaderTemplate avec un balisage personnalisé, vous devez convertir la colonne en un TemplateField, puis accéder aux contrôles qu'il contient.