C# ASP中继器中的嵌套类
我有一个嵌套类,其中包含订单的订单项:C# ASP中继器中的嵌套类,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个嵌套类,其中包含订单的订单项: public class Order { public int ItemID { get; set; } public int CustomerId { get; set; } ... public List<OrderItem> Items { get; set; } } public class OrderItem { public int ItemId { get; set; } ... } 在ascx页面上我
public class Order
{
public int ItemID { get; set; }
public int CustomerId { get; set; }
...
public List<OrderItem> Items { get; set; }
}
public class OrderItem
{
public int ItemId { get; set; }
...
}
在ascx页面上我有
<asp:Repeater ID="rptOrders" runat="server" HideControlForZeroRows="true" ZeroRowsText="You have no orders.">
<HeaderTemplate>
<table>
<tr class="tableHeader">
<td>Order #</td>
...
</tr>
</HeaderTemplate>
<ItemTemplate>
<ItemTemplate>
<tr>
<td><a href='#'><%# Eval("ItemID") %></a></td>
...
</tr>
</ItemTemplate>
...
但是我想用一个手风琴来显示隐藏订单细节,这里有一个例子:,这意味着我必须为嵌套的类项目向repeater表中添加行
我如何引用嵌套类,让另一个repeater在元素上迭代,为每个嵌套项添加一个repeater
我环顾了一下web,他们通常建议我使用一个嵌套的repeater单独调用嵌套类,但实际上我想利用我有定义良好的类这一事实。希望我能做一些类似的事情:
//parent repeater
<asp:Repeater ID="rptOrders" runat="server" HideControlForZeroRows="true" ZeroRowsText="You have no orders.">
....
//nested repeater
<asp:Repeater ID="rptOrderItems" runat="server" HideControlForZeroRows="true">
//父中继器
....
//嵌套中继器
但我如何为订单引用订单项目
<asp:Repeater runat="server" DataSource="<%# Container.DataItem %>">
<ItemTemplate>
<tr>
<td><%# Eval("ItemId") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
您可以将ItemDataBound事件添加到rptOrders中继器:
protected void rptOrders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var order = (Order)e.Item.DataItem;
Repeater innerRep = e.Item.FindControl("rptOrderItems") as Repeater;
innerRep.DataSource = order.Items;
innerRep.DataBind();
}
事实上,您可以在repeater项中拥有任何其他数据绑定控件,并使用list from DataItem对其进行绑定
protected void rptOrders_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var order = (Order)e.Item.DataItem;
Repeater innerRep = e.Item.FindControl("rptOrderItems") as Repeater;
innerRep.DataSource = order.Items;
innerRep.DataBind();
}