Отображение одного значения отношения один ко многим в GridView - PullRequest
2 голосов
/ 28 июля 2011

У меня есть 3 таблицы:

Заказать, OrderStates, OrderStateDefinition

В ордере есть много 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
  {
  }

1 Ответ

0 голосов
/ 09 августа 2011

Я часто нахожу, что проще создать собственный SQL, который делает это.SQL может быть немного сложным, но это проще, чем гадить с C #.

...