我認爲最簡單的答案是你不能,但必須有一定的方法才能實現。我想列出一個項目列表,然後列出其中的項目列表,只嵌套一個級別。即:如何在自己內部嵌套一個ASP.Net用戶控件?
Repeater
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
UserControl1
我真的想避免,如果在所有可能的使用LoadControl因爲我加入到這個列表的服務器端的Click事件裏面,所以我不能做PageInit loadControl讓所有的視圖狀態東西上班。
我要去嘗試寫出一個快速的僞代碼示例,它看起來像這樣:
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
你可以有一個_different instance_嵌套。 – Oded
如果你把它放在自身內部,它會給你一個循環引用錯誤。我甚至試圖將用戶控件放在一個新的UserControl中......即:UserControl1Child,它不過是父項的容器UserControl。它也給我一個循環的參考錯誤。將它們放在不同的目錄中。 –
沒有看到你的代碼,也不知道用戶控件是如何實現的,所以不可能完全回答這個問題。 – Oded