在设计时创建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)
答案 0 :(得分:0)
呃......我自己的问题的另一个答案。我在RowCreated中寻找这个名字。我应该一直在RowDataBound事件中寻找它。
它现在有效..现在我正确地做到了。
(我可能会在旅途中有太多东西......):S