在设计时创建 Gridview 时,您可以像这样创建模板列:
<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)
这确实会在每一行中创建一个 ID 为 hHidden 的隐藏控件。但它并没有给它像“gvSelect_ctl02_hHidden”这样的唯一ID,它只是“hHidden”。而且我知道有办法自己将行号附加到它上面。但我想知道是否有办法让它自动执行此操作。并且仍然允许我引用隐藏字段,例如:
CType(e.Row.FindControl("hHidden"), HiddenField)