JqG​​rid - 合并网格列模型javascript& JSON响应

时间:2011-11-10 17:40:32

标签: jquery jqgrid

是否可以将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>';
        }
    }},

1 个答案:

答案 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>
相关问题