我需要知道如何在用戶控件中嵌套中繼器。事情的html方面很好,它是我需要幫助的綁定和代碼。我只能找到使用sql數據源的例子,這並沒有什麼幫助。如何在asp.net中嵌套中繼器
我的中繼器看起來像這樣:
<asp:Panel ID="pnlDiscipline" runat="server" CssClass="">
<asp:Repeater ID="rptDiscipline" runat="server">
<ItemTemplate>
<h4><%#Eval("Discipline")%></h4>
<ul>
<asp:Repeater ID="rptPrograms" runat="server">
<ItemTemplate>
<li><asp:HyperLink runat="server" Text='<%#Eval("Name") %>' NavigateUrl='<%#Eval("Link") %>'></asp:HyperLink> <%#Eval ("Notation") %></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
我需要做的是希望合理明確的 - H4學科應出現一次,全部屬於該學科的條目列出如下,然後是下一個h4,然後是相應的列表,下一個h4等等。
數據源是在codebehind中創建的dataview,其中每一行都有'Name','Link','NOtation'和'Discipline'。我將dataview綁定到最外層的repeater,並且它的行爲如預期的那樣 - 列出每個條目的學科名稱,但表示在內部Repeater沒有數據
如何去使這項工作
編輯:?只是爲了澄清,我在代碼隱藏一個數據表中的每一行。在這個表中是一個項目,每個項目屬於一個學科,我想使用外部中繼器列出學科,內部列出每個學科下分組的項目,像這樣:
<h4>DISCIPLINE 1</h4>
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<h4>DISCIPLINE 2</h4>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
<h4>DISCIPLINE 3</h4>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
目前,結合數據表到外中繼器給出了這樣的(例如使用上面的數據):
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 2</h4>
<h4>DISCIPLINE 2</h4>
<h4>DISCIPLINE 3</h4>
<h4>DISCIPLINE 3</h4>
我用OnItemDataBound在外中繼器的建議,並且作爲一個測試用例我能夠訪問數據:
protected void rptDiscipline_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
DataRowView drView = (DataRowView) e.Item.DataItem;
string name = drView["Name"] as string;
string link = drView["Link"] as string;
string notation = drView["Notation"] as string;
Response.Write(name + link + notation + "<br />")
}
所以數據是存在的,這正是我希望看到的,我只是不能把它綁定到內轉發。如果有更高性能的方法來實現這一點,我很樂意重做我的解決方案。
你可以從這個線程http://stackoverflow.com/questions/1220715/creating-a-nested-repeater-control-dynamically/1220836#1220836 – 2011-05-30 03:59:07
什麼是你想綁定到內得到的想法中繼?也許發佈你綁定到外部中繼器的類。 – EdmundYeung99 2011-05-30 04:00:14
@Edmund - 編輯我的問題,希望能夠澄清我的問題 – Nathan 2011-05-30 04:30:09