使用内置ObjectDataSource
映射为每个项目建立一个单独的数据源可能是唯一直接的方法(也是唯一值得付出努力的简单方法......)。
这是您使用 的要求ObjectDataSource
,还是您可以选择不同的方式从存储中获取数据?我建议使用实体框架(恕我直言)或创建您自己的自定义类型,您可以使用自定义设计的 DAL 获取数据(这比使用 EF 做更多的工作,但如果您像某些人一样担心EF 仍处于起步阶段,这可能是您的选择)。
无论哪种情况,您最终都会得到一个名为 的 C# 类Program
,它分别具有 typeIEnumerable<Stakeholder>
和IEnumerable<Outcome>
calledStakeholders
和的属性Outcomes
。然后,您可以将它们用作项目中继器的数据源,并在ItemDataBound
事件中设置它们ProgramRepeater
,可能是这样的:
protected void ProgramRepeater_ItemDataBound(object sender, ItemDataBoundEvent e) {
Program dataItem = (Program)e.DataItem;
Repeater stakeholderRptr = (Repeater)e.Item.FindControl("ProgramRepeater");
Repeater outecomeRptr = (Repeater)e.Item.FindControl("OutcomeRepeater");
stakeholderRptr.DataSource = dataItem.Stakeholders;
stakeholderRptr.DataBind();
outecomeRptr.DataSource = dataItem.Outcomes;
outecomeRptr.DataBind();
}
当然,这是假设您使用的是 ASP.Net WebForms。在 ASP.Net MVC 中它更容易 - 您只需将对象作为Program
对象发送到View
,Model
然后直接在.Stakeholders
Outcomes
for
View
Note: All code is provided as is, and I do not guarantee that it will run as expected or even compile. It is just to give you an idea of what to make your code do - not necessarily the exact code you need to solve your problem.