1

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

1 回答 1

0

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

它现在可以工作了。现在我做得正确。

(我可能一次有太多事情要做..):S

于 2010-02-03T16:29:11.963 回答