ASP.NET MVC网格/表

时间:2011-01-17 04:39:09

标签: asp.net-mvc mvccontrib mvccontrib-grid

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's grid component,但它似乎无法生成这些子行。有没有办法扩展MvcContrib的网格来做到这一点?

4 个答案:

答案 0 :(得分:3)

如果输出中只需要一个表格,那么像嵌套循环一样简单的东西能为你工作吗?

<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>

答案 1 :(得分:3)

我会从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>

答案 2 :(得分:0)

那个好问题!!我们可以关注

吗?

亲子 父1孩子1,孩子2 父母2孩子3

如果是,

创建一个用户控件,它将打印父项的所有Childs,使用此控件呈现子列。

如果您有任何其他查询,请与我们联系。

让我们一起学习

答案 3 :(得分:0)

您可以使用jQuery插件。以下是相当不错的:

两者都是开源的。有一个商业版的jqGrid,它为您提供了MVC助手,可以轻松创建表。