設計時にグリッドビューを作成する場合、次のようなテンプレート列を作成できます。
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" ID="Label1"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
また、HTMLでは、次のような一意の名前が付けられます。
<span id="gvSelect_ctl02_Label1">blahblah</span>
そして、コードビハインドでこのラベルを参照できます。
CType(e.Row.FindControl("Label1"), Label)
これは完璧です。しかし、TemplateFieldsを動的に作成しているときに、これを行う方法がわかりません。「InstantiateIn」に次のコードがあります。
Dim hl As New HiddenField
hl.ID = "hHidden"
hl.Value = 0
AddHandler hl.DataBinding, AddressOf Me.hl_DataBinding
container.Controls.Add(hl)
そして、これは各行にhHiddenとしてIDを持つ隠しコントロールを作成します。ただし、「gvSelect_ctl02_hHidden」のような一意のIDは付与されず、単に「hHidden」になります。そして、自分で行番号を追加する方法があることを私は知っています。しかし、これを自動的に行う方法があるかどうか疑問に思いました。そして、それでも私が次のように隠しフィールドを参照できるようにします:
CType(e.Row.FindControl("hHidden"), HiddenField)