Asp.net 在repeater控件中查找Div或占位符,并向其添加控件

Asp.net 在repeater控件中查找Div或占位符,并向其添加控件,asp.net,vb.net,Asp.net,Vb.net,我在某个场景中遇到了麻烦。我有一个repeater控件,其中有一个占位符(为了测试,我放置了一个div,并尝试了这一点)。我想,在我的代码隐藏页面中,找到那个占位符或div,并在其中放置控件(目前,3个文本框和2个按钮) 我对在占位符中添加控件没有异议,我理解它是如何工作的,我在这里无法得到的是如何在这里找到这个动态控件 下面是一些代码片段,帮助说明我要做的事情 (asp) 编辑特殊注释就是把东西放在给定的divID中。为了让它工作,我给了divID一个我知道存在的静态值(rptSpecialN

我在某个场景中遇到了麻烦。我有一个repeater控件,其中有一个占位符(为了测试,我放置了一个div,并尝试了这一点)。我想,在我的代码隐藏页面中,找到那个占位符或div,并在其中放置控件(目前,3个文本框和2个按钮)

我对在占位符中添加控件没有异议,我理解它是如何工作的,我在这里无法得到的是如何在这里找到这个动态控件

下面是一些代码片段,帮助说明我要做的事情

(asp)

编辑特殊注释就是把东西放在给定的divID中。为了让它工作,我给了divID一个我知道存在的静态值(rptSpecialNotes_plhSpecialNotesRepeater_1)或类似的值。但是,我总是以空对象引用结束。

用于获取
rptSpecialNotes\u项目
事件处理程序中的嵌套控件-这将返回控件:

sender.FindControl("specialNotes")

它将返回一个
控件
类型,因此如果要使用该类型的特定属性和方法,则需要对正确的类型进行强制转换。

我不确定,但这可能会有帮助:

<asp:imagebutton runat="server" AlternateText="edit" ImageUrl="images/controls/Globe.png" width="40" height="40" CommandName="edit" CommandArgument='<%# Container.ClientID & "," &  eval("ItemID") %>'></asp:imagebutton>

在RPTSecialNotes_项命令事件处理程序中:

Dim plh As PlaceHolder = CType(e.Item.FindControl("plhSpecialNotesRepeater"), PlaceHolder)

plh.Controls.Add(lbl)

如果我做了这样的事?Dim plh As PlaceHolder=Me.Page.FindControl(“rptSpecialNotes\u udpSpecialNotesRepeater\u 0”),我应该找到该控件。但是这仍然会传播错误。啊,你知道,findcontrol不会出错,但是我以后不能向它添加任何控件。类似于:plh.controls.add(lbl)这样的错误out@Lenigod-那是另外一回事。您是否有异常和堆栈跟踪?[NullReferenceException:对象引用未设置为对象的实例。]异常不长,但足够长,我无法将整个内容粘贴进去,如果您继续提供帮助,我可以截图并将其放到imgur上,如果这对您有帮助的话!:D@Lenigod-可能是时候问一个新问题了。。。对我来说已经很晚了。这会正确地找到控件,但我仍然无法将控件添加到占位符本身。如上所述,这是一个完全不同的问题。你是对的,但我想我问的问题是错的。当你找到占位符、面板和…,你可以向它们添加任何子控件:
Dim lbl As New Label,lbl.Text=“SomeText”,lbl.Attributes.add(“Key”,“Value”),plh.Controls.add(lbl)
。您也可以对ant控件执行相同的操作。这在某种程度上是正确的。然而,在将plh定义为占位符之后,我仍然无法向其添加内容。如上所述,这是一个完全不同的问题。
<asp:imagebutton runat="server" AlternateText="edit" ImageUrl="images/controls/Globe.png" width="40" height="40" CommandName="edit" CommandArgument='<%# Container.ClientID & "," &  eval("ItemID") %>'></asp:imagebutton>
Dim plh As PlaceHolder = e.Item.FindControl("YOURCONTROLID")
Dim plh As PlaceHolder = CType(e.Item.FindControl("plhSpecialNotesRepeater"), PlaceHolder)

plh.Controls.Add(lbl)