在GridView中显示一对多关系中的单个值

时间:2011-07-28 10:34:03

标签: c# asp.net gridview one-to-many

我有3张桌子:

令, OrderStates, OrderStateDefinition

Order有许多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
  {
  }

1 个答案:

答案 0 :(得分:0)

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