1
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

4 に答える 4

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>
于 2011-01-17T04:47:02.630 に答える
3

私はそれらの両方を実装してから、強く型付けされIPersonた a を作成し、ループしてそれを呼び出しますDisplayTemplateIPerson

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>
于 2011-01-17T04:52:34.623 に答える
0

その良い質問!! 次のことができますか

親 子 親 1 子 1、子 2 親 2 子 3

もし、そうなら、

親のすべての子を出力するユーザー コントロールを作成し、このコントロールを使用して子列をレンダリングします。

他にクエリがあれば教えてください。

一緒に学びましょう

于 2011-01-17T07:22:59.750 に答える
0

jQuery プラグインを使用できます。以下はかなり良いです:

どちらもオープンソースです。簡単にテーブルを作成するための MVC ヘルパーを提供する jqGrid の商用バージョンがあります。

于 2011-01-17T07:37:16.430 に答える