我需要知道如何在用户控件中嵌套中继器。事情的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