jquery свойство jqgrid с оператором точки

У меня есть json со свойством, имеющим точку "." оператор в нем. Когда я пытаюсь отобразить свою сетку, она отображается как пустая (без каких-либо ошибок).

Вот мой JSON:

{
            "total":1,
        "page":1,
        "records":2,
        "rows":[{
                "id":2110040,
                "cell":{
                "function.code":"dsadad",
                        "service.name":"dsadasda"

                }
            },
            {
                "id":2115040,
                "cell":{
                 "function.code":"iuiyuiy",
                     "service.name":"iyuiyuiy"

                }
            }
        ]
    }

это моя colModel

colModel : [ {
        name : 'service.name',
        search : 'true',
        editable : true,
        //index : 'service.name',
        width : 200,
        jsonmap : "cell.service.name"           
    },
    {
        name : 'function.code',
        search : 'true',
        editable : true,
        sortable:true,
        //index : 'function.code',
        width : 200,
        jsonmap : "cell.function.code"          
    }],

Читатель JSON:

jsonReader : {
        repeatitems : false,
        root : "rows",
        cell : "cell",
        id : "id",
        page : "page",
        records : "records"
    },

Пожалуйста, помогите, что я пропустил здесь ??

Спасибо!


person user620339    schedule 01.08.2011    source источник


Ответы (2)


Я нахожу ваш вопрос интересным. Это близко к проблеме, описанной здесь, но в случай JSON вместо XML.

Проблема в том, что jqGrid пытается читать строки относительно obj.cell.function.code вместо obj.cell['function.code']. Чтобы позволить jqGrid правильно читать данные, вы можете использовать функции как jsonmap:

colModel: [
    {
        name: 'service_name',
        search: 'true',
        editable: true,
        width: 200,
        jsonmap: function (obj) {
            return obj.cell['service.name'];
        }
    },
    {
        name: 'function_code',
        search: 'true',
        editable: true,
        sortable: true,
        width: 200,
        jsonmap: function (obj) {
            return obj.cell['function.code'];
        }
    }
]

Как вы можете увидеть на демонстрации, как работает подход.

person Oleg    schedule 01.08.2011
comment
@user620339: Кстати, еще одна демонстрация от ваш старый ответ также работает. - person Oleg; 04.08.2011

Попробуй это

colModel : [ {
        name : 'service.name',
        search : 'true',
        editable : true,
        //index : 'service.name',
        width : 200,
        jsonmap : 'cell["service.name"]'           
    },
    {
        name : 'function.code',
        search : 'true',
        editable : true,
        sortable:true,
        //index : 'function.code',
        width : 200,
        jsonmap : 'cell["function.code"]'          
    }],
person ShankarSangoli    schedule 01.08.2011
comment
Тогда я думаю, что вы не можете использовать точку в имени свойства объекта json. Вы можете использовать подчеркивание или другой символ, например $. Взгляните на эту ссылку. - person ShankarSangoli; 01.08.2011
comment
Не уверен, что причиной является сам JSON или это JqGrid, потому что до этого я использовал flexigrid с тем же форматом JSON. В любом случае, спасибо за вашу помощь, Шанкар. - person user620339; 01.08.2011