Lors de la création d'un Gridview au moment de la conception, vous pouvez créer une colonne de modèle comme celui-ci:Modèle Dynamic GridView et identifiants de contrôle uniques (par exemple, zone de texte, étiquette)?
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="Label1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Et dans le HTML, il donnera un nom unique comme:
<span id="gvSelect_ctl02_Label1">blahblah</span>
Et je peux alors faire référence cette étiquette dans le code derrière par:
CType(e.Row.FindControl("Label1"), Label)
Qui est PARFAIT. Mais je ne peux pas comprendre comment faire ceci quand je crée dynamiquement TemplateFields. J'ai le code suivant dans mon « InstantiateIn »:
Dim hl As New HiddenField
hl.ID = "hHidden"
hl.Value = 0
AddHandler hl.DataBinding, AddressOf Me.hl_DataBinding
container.Controls.Add(hl)
Et cela ne crée un contrôle caché avec l'ID comme hHidden dans chaque ligne. Mais ça ne lui donne pas l'identifiant unique comme "gvSelect_ctl02_hHidden" c'est juste "hHidden". Et je sais qu'il y a des façons d'ajouter moi-même le numéro de ligne. Mais je me demandais s'il y avait un moyen de le faire automatiquement. Et toujours en me permettant de référencer le champ caché comme:
CType(e.Row.FindControl("hHidden"), HiddenField)
Qu'est-ce que "container" dans votre exemple? –
umm .. Conteneur ByVal En tant que System.Web.UI.Control? Qui est un "TemplateField" .. – Dan