クライアント側の jqGrid に入力するデータの大きなリストを取得します。
List<MyData> lotsOfRecords = getData();
多くの人が使用するため、キャッシュに保存します。
Cache["SharedData"].Add(lotsOfRecords);
このグリッドにより、ユーザーは処理対象のレコードを確認できます。ユーザーの並べ替え、フィルター、ページなどでチェックされるレコードを永続化したいと考えています。
bool Selected { get; set; }
私が最初に考えたのは、オブジェクトにプロパティを追加し、MyData
誰かがフィールドをチェックするたびにそれを切り替えることでした。これは共有キャッシュであるため、明らかに機能しません。私は、Bill User がチェックしたくないものを Joe 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 です。