【发布时间】:2011-07-28 10:34:02
【问题描述】:
我有 3 张桌子:
订购, 订单状态, 订单状态定义
一个订单有许多 OrderStates,然后有一个 OrderStateDefinition。
我有一个网格视图,我试图在其中仅显示 OrderStates 集合中的一个值 - 已添加的最新 OrderState。
我已经阅读了一些关于子查询的内容,但我不确定如何实现我想要的结果。
抱歉,缺少信息,我有一张很好的表结构图片,但 stackoverflow 不允许我上传。
编辑 -
好的,我想出了如何做到这一点。在填充 GridView 时,我使用事件 OnRowCreated 来设置所需字段的文本。为了获得我需要的控件,我使用了 e.Row.FindControl。
最后它的代码非常简单。当我最终寻求帮助时,我似乎总是能解决这些问题。
try
{
int orderID = e.Row.RowIndex;
Order order = ShopEntities.Orders.Single(o => o.OrderStateID == orderID);
// I can now get the list of orderstates
OrderStateDefinition osd = order.OrderStates.OrderBy(o => o.Date).Last().OrderStateDefinition;
((Label)e.Row.FindControl("Label2")).Text = osd.State;
}
catch
{
}
【问题讨论】:
-
您如何确定哪个 OrderState 是最新的? OrderStates 表中有类似 CreatedOn 字段的内容吗?
-
获取 id 的
max或OrderStates的时间戳,这表明它是最新的,并使其成为 where 子句的一部分 -
如果你给出所有 3 个表的结构会更好。
标签: c# asp.net gridview one-to-many