Привязка данных к GridView из объекта с дочерними объектами, содержащими соответствующие поля - PullRequest
2 голосов
/ 16 июля 2010

У меня есть Список сложных объектов, содержащих другие объекты, которые я предоставляю в качестве источника данных для вида сетки (в настоящее время я использую BoundFields для столбцов). Мне нужно привязать данные к столбцам из объектов во время выполнения. Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Используйте проекцию LINQ для выравнивания (денормализации) графа сущностей. Вы можете либо создать новый класс ViewModel, либо связать его с анонимным классом, например:

var viewList = (
   from entity in entityList
       select new
       {
           Field1 = entity.Field1,
           Field2 = entity.Relation.AnotherField,
           Field3 = entity.Field3 + entity.Relation.YetAnotherField
       }).ToList();
myGridView.DataSource = viewList;
myGridView.DataBind();

Используйте Field1, Field2 в свойствах GridView для привязок данных.

Редактировать

Вышеуказанная проекция в лямбда-синтаксисе:

var viewList = entityList
    .Select(entity => new
       {
           Field1 = entity.Field1,
           Field2 = entity.Relation.AnotherField,
           Field3 = entity.Field3 + entity.Relation.YetAnotherField
       })
   .ToList();
0 голосов
/ 08 марта 2013

Вы также можете сделать что-то вроде следующего:

        <asp:GridView ID="TemplatesGrid" runat="server">
            <Columns>
                <asp:BoundField DataField="TemplateId" HeaderText="ID" />
                <asp:BoundField DataField="Name" HeaderText="Template Name" />
                <asp:TemplateField HeaderText="Author">
                    <ItemTemplate>
                        <%# Eval("AppUser.FullName") %>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Где AppUser - объект, содержащийся в шаблоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...