我认为简短的答案是你做不到,但必须有一些方法来实现它.我想制作一个项目列表,然后列出其中的项目列表,只嵌套一个级别.即:
Repeater UserControl1 UserControl1 UserControl1 UserControl1 UserControl1 UserControl1 UserControl1
我真的很想避免使用LoadControl,因为我在服务器端单击事件中添加到此列表,因此我无法在PageInit上执行loadControl以使所有viewstate工作正常.
Page.aspx
<asp:repeater runat="Server" id="someRepeater"> <uc:UserControl1 runat="Server" id="ctrlParent" /> </asp:repeater>
UserControl1.ascx
<asp:label id="label1" runat="server" /> <asp:repeater runat="server" id="childRepeater"> <uc:UserControl1 runat="server" id="ctrlChild" /> </asp:repeater>
UserControl1.ascx.vb
If me.HasChildren then 'BindChildRepeater' end if sub Fill(Data as RelevantData) label1.Text = Data.someText end sub sub ChildRepeater_ItemDataBound(object as sender,e as someArgs) Dim childCtrl = e.item.findcontrol("ctrlChild") childCtrl.Fill(e.item.dataitem) end sub
解决方法
您可以将转发器嵌套在转发器中
<asp:repeater runat="Server" id="someRepeater1"> <uc:UserControl1 runat="Server" id="ctrlParent1" /> <asp:repeater runat="Server" id="someRepeater2"> <uc:UserControl1 runat="Server" id="ctrlParent2" /> </asp:repeater> </asp:repeater>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。