【发布时间】:2013-11-14 20:15:39
【问题描述】:
我已经看到 (3) 个在 ASP.NET 中使用嵌套 DataList 或中继器的不同示例,但都使用原始 DataTable/DataSet 和 CreateChildView 调用的组合来创建外部和内部之间的关系DataList.
好吧,既然是 2013 年而不是 2003 年,我有一个具有以下结构的类:
public class Customer
{
public string FullName { get; set; }
public List<Orders> { get; set; }
}
这个想法是Orders 集合是绑定为DataSource 用于嵌套 DataList。问题是我似乎无法弄清楚如何在绑定代码中设置关系。内部 DataList 实际上不能通过 Intellisense 在代码中直接访问,因为它嵌套在主 DataList 下。这是ItemDataBound 事件中的典型代码,用于查找内部DataList 并使用CreateChildView 分配其DataSource:
protected void outerRep_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
DataRowView drv = e.Item.DataItem as DataRowView;
DataList innerDataList = e.Item.FindControl("innerDataList") as DataList;
innerDataList.DataSource = drv.CreateChildView("OrdersRelation");
innerDataList.DataBind();
}
}
我看到的所有示例中的“OrdersRelation”设置如下:
// Attach the relationship to the dataSet
ds.Relations.Add(new DataRelation("OrdersRelation", ds.Tables[0].Columns["OrderID"],
ds.Tables[1].Columns["OrderID"]));
outerDataList.DataSource = ds.Tables[0];
outerDataList.DataBind();
显然这不适用,因为我使用的是强类型对象,其集合属性为“订单”。
如何实现相同的结果并将我的内部 DataList 绑定到我的 Orders 集合属性?
【问题讨论】: