jqGrid: 間接データ表示の処理
表形式のデータを扱うときは、さまざまな表のデータを表示する必要があることがよくあります。たとえば、学生の名前と都市 ID を含むメイン テーブルと、都市 ID を実際の都市名にマップする別のテーブルがある場合、都市 ID の代わりに都市名をグリッドに表示することができます。
直接接続方式の制限事項
一般的なアプローチは、都市 ID フィールドに基づいてこれらのテーブルを結合することです。ただし、実際の都市名の代わりに都市 ID フィールドを含むクラス構造を使用している場合、このアプローチは現実的ではありません。
解決策: ルックアップ関数を使用して ID をデコードします
この問題を解決するために、jqGrid は formatter: "select"
関数を提供します。この関数を使用すると、都市 ID を対応する都市名にデコードできます。ただし、このデコードを実行するには値マップが必要であり、このマップは jqGrid がサーバー応答を処理する前に設定する必要があります。
推奨されるアプローチは、「select」フォーマッタを使用して列に使用される追加の editoptions.value
属性データでサーバー応答を拡張することです。この拡張応答は次の形式にすることができます:
<code class="language-json">{ "cityMap": {"11": "Chennai", "12": "Mumbai", "13": "Delhi"}, "rows": [ { "SID": "1", "SNAME": "ABC", "CITY": "11" }, { "SID": "2", "SNAME": "XYZ", "CITY": "12" }, { "SID": "3", "SNAME": "ACX", "CITY": "13" }, { "SID": "4", "SNAME": "KHG", "CITY": "13" }, { "SID": "5", "SNAME": "ADF", "CITY": "12" }, { "SID": "6", "SNAME": "KKR", "CITY": "11" } ] }</code>
jqGrid 設定では、次のように列を構成できます:
<code class="language-javascript">colModel: [ {name: "SNAME", width: 250}, {name: "CITY", width: 180, align: "center"} ], beforeProcessing: function (response) { var $self = $(this); $self.jqGrid("setColProp", "CITY", { formatter: "select", edittype: "select", editoptions: { value: $.isPlainObject(response.cityMap) ? response.cityMap : [] } }); }, jsonReader: { id: "SID"}</code>
このメソッドを使用すると、サーバーから受信したデータに基づいて列オプションを動的に設定できます。また、言語設定の指定や選択要素内の多数の項目の処理など、より複雑なシナリオを柔軟に実装できるようになります。
以上がjqGrid で間接データ (ID からの都市名など) を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。