动态Gridview模板和唯一控件(即文本框,标签)ID?

时间:2010-02-03 15:17:35

标签: asp.net gridview templatefield unique-id

在设计时创建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)

1 个答案:

答案 0 :(得分:0)

呃......我自己的问题的另一个答案。我在RowCreated中寻找这个名字。我应该一直在RowDataBound事件中寻找它。

它现在有效..现在我正确地做到了。

(我可能会在旅途中有太多东西......):S