edittype: 'custom'ケースで使用し、 のカスタム実装custom_elementとのcustom_valueメソッドを提供する必要があると思いますeditoptions。カスタム入力要素からの値を読み取る必要がある場合、jqGrid はcustom_valueパラメーター パラメーターを使用してメソッドを呼び出し'get'ます。メソッドの実装はcustom_value、ケース内の項目の配列を返す可能性があります。
一般に、複数選択の入力であるデータの配列を表示できるようにするカスタム フォーマッタを実装する必要があることを理解することが重要です。幸いなことformatter: "select"に、ラインがあります
cellval = cellval + "";
配列をカンマ区切りの項目に変換します。.join(",")この行により、配列は を使用して文字列に変換され、formatter: "select"配列を入力として正常に受け入れます。
デモ

上記のアプローチを示します。次のコードを使用します。
{
name: "Subcategory",
width: 250,
formatter: "select",
edittype: "custom",
editoptions: {
value: {"1": "football", "2": "formula 1", "3": "physics", "4": "mathematics"},
custom_element: function (value, options) {
return $.jgrid.createEl.call(this, "select",
$.extend(true, {}, options, {custom_element: null, custom_value: null}),
value);
},
custom_value: function ($elem, operation, value) {
if (operation === "get") {
return $elem.val();
}
},
multiple: true
}
}
上記のコード$.jgrid.createElでは、jqGrid の既存のコードで複数値の選択を作成するために使用します。必要な唯一のことは、 setAttributesからのメソッドの不要な呼び出しを防ぐためにオプションをcustom_element削除することです。コード行を変更して除外属性のリストにと を含めると、式は に縮小できます。custom_valuesetAttributes"custom_value""custom_element"$.extend(true, {}, options, {custom_element: null, custom_value: null})options
<select>を使用する場合とほぼ同じ方法で取得しedittype: "select"ます。違いは次の 2 つだけです。
- の
<select>内部で作成された要素edittype: "custom"には追加の属性がありますclass="customelement"
- の
<select>内部で作成された要素は、の内部でedittype: "custom"ラップされます (直接の子になります)。<span class="editable">...</span>
このような違いは、私たちの場合は重要ではないようです。
更新:setAttributesメソッドのコードは、gtihub の jqGrid のメイン コードで修正されました (提案とcommit を参照してください)。したがって、jqGrid の次のバージョン (4.4.1 以降) では、コードを次のように削減できますcustom_element。
custom_element: function (value, options) {
return $.jgrid.createEl.call(this, "select", options, value);
}
対応するデモを参照してください。