datatables.editable と Jeditable を使用して jquery Datatable を実装しました。テキスト領域を編集可能フィールドとして使用できますが、選択を編集可能として設定する際に問題があります。
編集可能を初期化する次のコードがあります。
oTable.makeEditable({
sUpdateURL: "../ReconService.asmx/UpdateUser",
"aoColumns": [
null,
null,
{
indicator: 'Updating user...",
tooltip: "Change user",
type: "select",
submit: "Save",
data: getUserFilterOptions()
}
]
});
次に、DB からユーザーのリストを取得するための javascript/jquery 関数があります。関数内で、さまざまなことを試しました。現在の関数は、文字列を Web サイトjeditableで指定された形式に手動でアセンブルします。
私が持っている機能は次のとおりです。
function getUserFilterOptions() {
$.ajax({
type:"POST",
contentType: "application/json; charset=utf-8",
url: "../ReconService.asmx/GetUsers",
dataType: "json",
success: function(result){
var userResult = result.d;
if (userResult.length > 0){
var text = "{'Select':'Select',";
$.each(userResult, function(index, val) {
text += "'";
text += val["value"];
text += "':'";
text += val["value"];
text += "'";
text += ",";
});
text += "'selected:'Select'}";
return text;
}
},
});
}
Chrome の開発者ツールを使用して関数をステップ実行すると、関数は次の文字列を返します:
"{'Select':'Select','Administrator':'Administrator','User1':'User 1','selected ':'Select'}"
私が知る限り、形式は正しいのですが、編集可能なテーブル セルをクリックするとエラーが発生します。
キャッチされていない SyntaxError: 入力の予期しない終了 jquery.jeditable.mini.js:34 $.editable.types.select.content jquery.jeditable.mini.js:34 $.fn.editable.each.reset.self.editing jquery.jeditable .mini.js:18 jQuery.event.dispatch jquery-1.8.3.js:3058 jQuery.event.add.elemData.handle.eventHandle jquery-1.8.3.js:2676
紛らわしいのは、その文字列値をコピーして jeditable の data パラメータに直接入れると、正常に動作することです。このリテラル文字列を返すだけの関数も作成しましたが、正常に動作します。
例として、関数の内容を次のように置き換えます。
function getUserFilterOptions(){
return "{'Select':'Select','Administrator':'Administrator','User1':'User 1','selected':'Select'}"
}
これはうまくいきます。
私はjavascriptの専門家ではないので、助けていただければ幸いです。