是否可以将Column Model javascript文件和原始数据JSON响应合并到1个文件中?
奥列格 - 你走了:
JSON - codes.json
{
"codes":[
{
"code" : "WFH - Work From Home"
},
{
"code" : "OST - Onsite"
}
]}
dataUrl和buildSelect - 这是一个空的选择框
editoptions: {
dataUrl: 'http://localhost/json/codes.json',
type: "GET",
dataType: "json",
contentType: "application/x-javascript; charset=utf-8",
async: "true",
buildSelect: function(response){
var s = '<select>';
$.each(response.codes, function(index, codes){
s.append("<option>"+codes.code+"</option>");
});
return s + '</select>';
}
}},
答案 0 :(得分:1)
您应该将buildSelect
的代码修改为以下
buildSelect: function (data) {
var s = '<select>', codes, i, l, code, prop;
if (data && data.codes) {
codes = data.codes;
for (i = 0, l = codes.length; i < l; i++) {
code = codes[i];
// enumerate properties of code object
for (prop in code) {
if (code.hasOwnProperty(prop)) {
s += '<option value="' + prop + '">' + code[prop] + '</option>';
break; // we need only the first property
}
}
}
}
return s + "</select>";
}
此外,如果从服务器获取数据,则应使用ajaxSelectOptions
设置jqGrid的相应$.ajax
请求的任何选项。无论如何,您应该使用相对网址,例如json/codes.json
或/json/codes.json
,而不是http://localhost/json/codes.json
。
ajaxSelectOptions
参数的示例可以是以下
ajaxSelectOptions: {
dataType: 'json',
cache: false
}
如果确实需要contentType: "application/x-javascript; charset=utf-8"
,您可以将其添加为ajaxSelectOptions
的附加属性。
如何从the demo看到上述buildSelect
函数可以从您的JSON数据生成正确的选择。选择看起来像
<select role="select" id="2_code" name="code">
<option value="code1" role="option">WFH - Work From Home</option>
<option value="code2" role="option">OST - Onsite</option>
</select>