我正在处理数据库中的三个表。第一个表标记为“Accounts”,并与第二个表“AccountItems”具有一对多关系。AccountItems 表有一个 size 列。第三个表,与这个问题有些相切,是“客户”,它有很多帐户。
我正在创建一个绑定到 Account 表的 RadGrid。它应该看起来像这样:
Customer | Location | Account# | Total Size
___________________________________________
Location 和 Account # 和 Customer 一样简单,因为导航属性在项目模板中工作。
然而,我的问题是大小列。它应该总计每个 AccountItem 的大小。例如,如果有四个 AccountItem,每个大小为“50”,那么总数应该是 200。看起来我不能像在 Customer 中那样简单地在 Eval() 中导航子关系。是否可以在列代码中执行此操作,或者我是否需要为 OnItemCreated 执行服务器端事件处理程序?
编辑
我想出了一个临时修复。
<ItemTemplate>
<asp:Label ID="lblSizeSum" runat="server"Text='<%# CalculateSizeTotal((MS_Accounts)Container.DataItem)%>'>
<ItemTemplate>
然后是后面的代码:
Protected string CalculateSizeTotal(MS_Accounts dataItem)
{
return dataItem.MS_AccountLoads.Sum(s => s.Size).ToString();
}
我唯一不喜欢的是通过直接访问我的 ORM 进行强制转换明显违反了 MVC。