我得到大量数据以填充到客户端的 jqGrid 中。
List<MyData> lotsOfRecords = getData();
然后我将其存储在缓存中,因为很多人会使用它:
Cache["SharedData"].Add(lotsOfRecords);
此网格允许用户检查记录以进行处理。我想保留作为用户排序、过滤器、页面等检查的记录。
我的第一个想法是为对象添加一个属性bool Selected { get; set; }
,MyData
并在有人检查字段时切换它。显然,这是行不通的,因为这是一个共享缓存。我不想让 Joe User 检查 Bill User 不想检查的东西。
下一个想法是存储一个Dictionary<int, bool>
会话中,它将记录的 id 映射到检查状态。这还不错,但由于没有简单的方法在 .NET 中组合对象,我看不到一个干净的方法可以在没有笨重的匿名对象的情况下将其发送到我的网格:
return lotsOfRecords.Select(record => {
record.Id,
record.Name,
...
myDictionary[record.Id] // true/false for checked
};
那将是一个解决方案,但考虑到我的对象中有很多字段并在几页中以类似的方式使用它,我希望有一个更简洁的设计模式。欢迎任何建议。提前致谢!
顺便说一句,我当前的环境是带有 jQuery/UI 和 jqGrid 的 ASP.NET MVC 3。