2013-01-14 20 views
0

我的应用程序中的数据表有很多列。不同的用户需要不同的一组列并按特定的顺序。我在做的方式是,我有一个表与每个列相关联的唯一ID,我将它们存储在用户偏好中。例如:什么是基于偏好的表列顺序的理想方法

columnsToDisplay = "1,4,23,12,2,5,6,7,8,13,15" 

在我看来,我使用如果否则,如果遍历虽然我的表模型(我使用ASP.NET MVC)来渲染表。我觉得这不是正确的做法。想象一张有50列的桌子,如果有50桌子,还可以做其他事情!如果不使用jQuery或任何客户端脚本插件,这个问题的理想方法是什么?

编辑: 这是我现在正在做的。我将每个列与使用偏好进行比较。

foreach(var col in model) 
{ if(col.name == id) { 
<td>{{id}}</td>}else if(col.name == customerName) { 
<td>{{name}}</td>}else if(col.name == balance) { 
<td>{{balance}}</td>}else if(col.name == createdOn) { 
<td>{{createdOn}}</td>} 
} 
..... 

等等...

+0

这是一个老问题,但这里是另一个解决方案:http://stackoverflow.com/a/28611217/215752 – Hogan

回答

0

如果这些表是只读(你并不需要能够发布他们回服务器),你很可能与你扔模型数据脱身到IDictionary对象的数组中。然后,您可以使用columnsToDisplay(作为整数的数组)的值在创建视图时获取相关列。

事情是这样的,假设你的模型被称为model

model.ColumnArray = { 2, 4, 6, 1, 0 }; 

然后,假设model有一个名为Rows属性,有您的IDictionary对象:

@foreach(var model in Model.Rows) 
{ 
    <tr> 
    foreach(var column in Model.ColumnArray) 
    { 
     <td>@model[column]</td> 
    } 
    </tr> 
} 
相关问题