ここで見られるものに非常に近い機能を複製しています。 https://onabai.wordpress.com/2013/07/17/kendoui-multiselect-in-a-grid-yes-we-can/
インラインの複数選択エディター フィールドを持つ剣道グリッドがあります。その複数選択の変更時に開始された datasource.sync() イベントがあります。私が抱えている問題は、ポスト変数でデータがどのように配置されるかです。
FireFox で FireBug を使用しています。sync() イベントで、このように複数選択フィールドの値を表示する関数を設定できます。
console.log(this.value());
これは、私が「RoleCode」と呼んだ文字列配列フィールド用です。とにかく、コンソールログには値が表示されます。たとえば、
A, OU
しかし、コントローラーへの Post 呼び出しとパラメーターを見ると、RoleCode フィールドが重複していることがわかります。これが、コントローラーがメソッド シグネチャを認識しない理由です。たとえば、これは FireBug で見られるものです...
ID 123
Field1 TextFromField1
RoleCode[1][RoleCode] OU
RoleCode[] A
投稿パラメーターが使用できるように、これをどのように設定すればよいでしょうか?
アップデート
今のところ、更新関数を変更して、複数選択値をコンマ区切りの文字列として送信するだけです。コントローラーでそれらを処理できます。私はこの設定があまり好きではありませんが、投稿された値を正しく送信する方法を見つけるまでは、これを使用します。
update: {
url: "Home/GridUpdate",
type: "POST",
dataType: "json",
data: function () {
//Grid does not post multiselect array correctly, need to convert to a string
var rolesString = $("#gridRoleList").data("kendoMultiSelect").value().toString();
return { rolesString: rolesString };
},
complete: function (e) {
setTimeout(function () {
refreshGrid();
}, 300);
},
success: function (result) {
// notify the data source that the request succeeded
options.success(result);
},
error: function (result) {
// notify the data source that the request failed
options.error(result);
}
},
更新 2
実際には、グリッド内の別のフィールドを編集すると、複数選択が見つからないために js エラーが発生するため、これは良い考えではありません。