2011-07-28 31 views
2

我有3个表:显示从一个单一的值,以一对多的关系在GridView

订单, OrderStates, OrderStateDefinition

定单已经许多OrderStates然后具有一个OrderStateDefinition。

我有一个GridView,我试图在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 
    { 
    } 
+0

您认为如何确定哪个OrderState是最新的? OrderStates表中是否有类似CreatedOn的字段? –

+1

获得任何一个id的'max'或者'OrderStates'的时间戳,它表明它是最新的并且使它成为你的where子句的一部分 – V4Vendetta

+0

如果给出所有3个表的结构,会更好。 – suryakiran

回答

0

我经常发现创建自己的SQL更容易。 sql可能有点复杂,但比使用c#更容易。