我的应用程序中的数据表有很多列。不同的用户需要不同的列集并按特定顺序。我正在做的方式是,我有一个表的每列相关的唯一ID,我将它们存储在用户首选项中。例如:
columnsToDisplay = "1,4,23,12,2,5,6,7,8,13,15"
在我看来,我正在使用 if else if 来迭代我的表模型(我使用的是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 :(得分: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>
}