我有3个班级:
class R{ string NameR;}
class A{ string NameA;}
Class RP
{
R objR;
A objA;
bool result;
}
我使用NHibernate所以在DB中我有一个表RP:
[Id] [int] IDENTITY(1,1) NOT NULL,
[Result] [bit] NULL,
[RId] [int] NULL,
[AId] [int] NULL
我需要在我的视图中显示如下矩阵:
__ A1 A2 A3
R1 1 0 1
R2 1 1 0
R3 0 0 1
其中A1,A2,A3是NameA的值,R1,R2,R3为NameR,1,0,1,0 ..为Result字段的值。 问题:如果我添加新的A对象
,列数会增加问题:
是否有显示此类网格的HtmlHelper(来自RP对象列表)?
是否有一个HtmlHelper显示DataTable对象的网格(我创建一个呈现此网格的SQL查询)?
答案 0 :(得分:1)
无论如何,即使你没有提供足够的细节,这里也是如此。如果你有IList< RP>你会做的
<table>
<tr>
<th>R/A</th>
<% foreach (var a in Model.Select(x => x.objA.NameA).OrderBy(x => x).Distinct()) { %>
<th><%= a %></th>
<% } %>
</tr>
<% foreach (var data in Model.GroupBy(x => x.objR.NameR)) { %>
<tr>
<td><%= data.Key %></td>
<% foreach (var aas in data.OrderBy(x => x.objA.NameA)) { %>
<td><%= aas.result ? "1" : "0" %></td>
<% } %>
</tr>
<% } %>
</table>
当然,您最好在控制器中计算此值,以便将分组模型而不是列表传递给视图。它假定你总是有确切数量的A,或者你必须稍微扩展逻辑。