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_value
setAttributes
"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);
}
対応するデモを参照してください。