これは、このスレッドの続きです。free-jqGrid 4.9.0を使用しており、インライン編集を行っています。
{ name: 'ContactName', editable: true, width: 100, sortable: false, frozen: true, formatter: 'select', edittype: 'select',
editoptions: {
dataUrl: '/InvestorList/GetContactList',
postData: function (rowid, value, cmName) {
return { projectId: rowid };
}
}
ASP .NET MVC controllerには、次のメソッドがあります。
public JsonResult GetContactList(string projectId)
{
var contacts = new Dictionary<string, string>();//context.GetContactList(projectId);
contacts.Add("123","IAM1");
contacts.Add("1234", "IAM2");
contacts.Add("12345", "IAM3");
return Json(contacts, JsonRequestBehavior.AllowGet);
}
IE 開発者ツールを使用すると、これが応答になります。
{"123":"IAM1","1234":"IAM2","12345":"IAM3"}
しかし、次のエラーが表示されます。
http://localhost:51176/Scripts/jquery-2.1.3.min.js 0x800a139eの行 2、列 12461 で未処理の例外 - JavaScript ランタイム エラー: 構文エラー、認識できない式: {"123":"IAM1"," 1234":"IAM2","12345":"IAM3"}
dataUrl
他の列にまったく同じ形式を使用しているため、どのような形式が期待されるのか疑問に思っています。たとえばeditoptions: { value: TeaserStatusList }
、この場合TeaserStatusList
は次の形式と同じです{"123":"IAM1","1234":"IAM2","12345":"IAM3"}
ありがとう
アップデート:
{ name: 'ContactId', editable: true, width: 100, sortable: false, edittype: 'select', editoptions: { dataUrl: '/InvestorList/GetContactList',
postData: function (rowid, value, cmName) {
var accid = $(gridId).jqGrid("getCell", rowid, "AccountId");
return { accountId: accid };
},
buildSelect: function (data) {
var s = "<select>";
data = JSON.parse(data);
$.each(data, function (k, v) {
s += '<option value="' + k + '">' + v + '</option>';
});
return s + "</select>";
}
}