ASP.NET MVC сетка / таблица - PullRequest
       6

ASP.NET MVC сетка / таблица

1 голос
/ 17 января 2011
public class Person
{
    public string First { get; set; }
    public string Last { get; set; }
    public int Age { get; set; }
    public IEnumerable<Child> Children { get; set; }
}

public class Child
{
    public string First { get; set; }
    public string Last { get; set; }
    public int Age { get; set; }
}

Я ищу способ визуализации таблицы из моей модели типа IEnumerable<Person>. Я пытаюсь сгенерировать следующую таблицу:

<table>
    <tr class="person">
        <td>First 1</td>
        <td>Last 1</td>
        <td>1</td>
    </tr>
    <tr class="child">
        <td>First 1</td>
        <td>Last 1</td>
        <td>1</td>
    </tr>
    <tr class="child">
        <td>First 2</td>
        <td>Last 2</td>
        <td>2</td>
    </tr>
    ...
    ...
</table>

Каждый человек - это ряд, и каждый из его детей будет отдельным рядом под рядком. Это будет повторяться для каждого человека в IEnumerable<Person>.

Существуют ли сетки или компоненты, которые генерируют такую ​​таблицу? Я нашел компонент сетки MvcContrib , но он не может генерировать эти дочерние строки. Есть ли способ расширить сетку MvcContrib для этого?

Ответы [ 4 ]

3 голосов
/ 17 января 2011

Я бы сделал так, чтобы они оба реализовали из IPerson, а затем создал бы DisplayTemplate, который был строго набран на IPerson, затем перебрал и назвал его

public interface IPerson
{
    string First { get; set; }
    string Last { get; set; }
    int Age { get; set; }
}

<%@ Control Language="C#" Inherits="ViewUserControl<IPerson>" %>

<tr class="<%=Model.GetType().Name.ToLower() %>">
    <td><%: Model.First %></td>
    <td><%: Model.Last %></td>
    <td><%: Model.Age %></td>
</tr>

<table>
<% foreach (Person person in Model) { %>
    <%=Html.DisplayFor(m => person, "IPersonRow") %>
    <% foreach (Child child in person.Children) { %>
    <%=Html.DisplayFor(m => child, "IPersonRow") %>
    <% } %>
<% } %>
</table>
3 голосов
/ 17 января 2011

Если все, что вам нужно для вывода - это таблица, подойдет ли вам что-нибудь простое, например, вложенный цикл?

<table>
<% foreach (Person person in Model)
   { %>

   <tr class="person">
    <td><%: person.First %></td>
    <td><%: person.Last %></td>
    <td><%: person.Age %></td>
   </tr>

   <% foreach (Child child in person.Children) { %>

   <tr class="child">
    <td><%: child.First %></td>
    <td><%: child.Last %></td>
    <td><%: child.Age %></td>
   </tr>

   <%} %>

<%} %>
</table>
0 голосов
/ 17 января 2011

Вы можете использовать плагины jQuery. Следующее довольно хорошо:

Оба с открытым исходным кодом. Есть коммерческая версия jqGrid, которая дает вам помощники MVC, чтобы легко создавать таблицы.

0 голосов
/ 17 января 2011

Хороший вопрос !!Можем ли мы выполнить следующие действия:

Родительский дочерний элемент Родительский 1 дочерний 1, дочерний2 Родительский 2 дочерний 3

Если да,

Создать пользовательский элемент управления, который будет печатать все дочерние элементы для родителяиспользуйте этот элемент управления для рендеринга дочернего столбца.

Пожалуйста, дайте мне знать, если у вас есть какие-либо другие запросы.

Давайте учиться вместе

...