Конфигурация jqgrid jsonReader

Я новичок в jqgrid, наконец, я установил сетку. Предположим, мне нужно настроить jsonReader так, чтобы сетка знала, где получить мои данные сетки в возврате json. Однако я получил пустые ячейки после нескольких дней.

Вот моя сетка:

jQuery("#list48").jqGrid({
            url: 'dbtest.aspx/get_offsite_history2',
            datatype: "json",
            mtype: 'POST',
            ajaxGridOptions: { contentType: "application/json" },
            serializeGridData: function(postData) {
                return JSON.stringify(postData);
            },
            jsonReader: {
                root: function(obj) { alert(JSON.stringify(obj.d)); return obj.d; },
                repeatitems: false
            },
            height: 'auto',
            rowNum: 30,
            rowList: [10, 20, 30],
            colNames: ['name', 'start_date', 'duration', 'offsite_cat'],
            colModel: [
                          { name: 'name', index: 'name', width: 80, align: 'left', editable: true, edittype: 'text' },
                          { name: 'start_date', index: 'start_date', width: 120, align: 'left', editable: true, edittype: 'text' },
                          { name: 'duration', index: 'duration', width: 120, align: 'left', editable: true, edittype: 'text' },
                          { name: 'offsite_cat', index: 'offsite_cat', width: 120, align: 'left', editable: true, edittype: 'text'}],
            pager: "#plist48",
            viewrecords: true,
            sortname: 'name',
            caption: "Grouping Array Data",
            gridview: true
        });

Это возврат сервера из url dbtest.aspx/get_offsite_history2:

{"d":"[{\"name\":\"A\",\"start_date\":\"B\",\"duration\":\"C\",\"offsite_cat\":\"D\"}]"}

я предполагаю получить результат, установив «root: 'd», но я получил 64 пустых строки для этого ...

искать комментарии ... много спасибо

2
nl ja de

2 ответы

Причиной вашей проблемы является ошибка в коде сервера. Вы делаете сериализацию в JSON дважды . После десериализации свойства d ответа сервера вы получаете строку JSON (!!!) вместо объекта. Типичная ошибка - это ручное использование JavaScriptSerializer.Serialize в веб-методе. Один из них должен вернуть сам объект , а не строку, которая является результатом сериализации.

Без изменения текущего кода сервера вы можете устранить проблему, используя

jsonReader: {
    root: function (obj) {
        alert(typeof obj.d === "string" ? obj.d : JSON.stringify(obj.d));
        return typeof obj.d === "string" ? $.parseJSON(obj.d) : obj.d;
    },
    repeatitems: false,
    page: function() { return 1; },
    total: function() { return 1; },
    records: function (obj) {
        return typeof obj.d === "string" ? $.parseJSON(obj.d).length : obj.length;
    }
}

или (если вы используете loadonce: true ) просто

jsonReader: {
    root: function (obj) {
        return typeof obj.d === "string" ? $.parseJSON(obj.d) : obj.d;
    },
    repeatitems: false
}

Поскольку ваш текущий код сервера не реализован подкачкой данных, вы должны увеличить rowNum до некоторого достаточно большого значения, например rowNum: 10000 или использовать loadonce: true код>.

UPDATED: You can find here modified demo which works. It displays

enter image description here

после сообщения alert .

3
добавлено
ты мужчина! я получил это сработало, большое спасибо.
добавлено автор user2045340, источник
@ user2045340: Добро пожаловать!
добавлено автор Oleg, источник

Я думаю, что проблема заключается в структуре возвращаемых json-данных.

Ниже я использую:

{   "page":1,
    "rows":[{"id":"1","cell":["1","1","Row 1","3","9",""]},
            {"id":"2","cell":["2","2","Row 2","2","1",""]},
            {"id":"3","cell":["3","4","Row 3","2","0",""]}],
    "records":3,
    "total":1
}

Вам может потребоваться добавить colModel для id, чтобы однозначно идентифицировать каждую строку.

например

      colNames: ['id', 'name', 'start_date', 'duration', 'offsite_cat'],
        colModel: [
                      { name: 'id', index: 'id', hidden: true },
                      { name: 'name', index: 'name', width: 80, align: 'left', editable: true, edittype: 'text' },
                      { name: 'start_date', index: 'start_date', width: 120, align: 'left', editable: true, edittype: 'text' },
                      { name: 'duration', index: 'duration', width: 120, align: 'left', editable: true, edittype: 'text' },
                      { name: 'offsite_cat', index: 'offsite_cat', width: 120, align: 'left', editable: true, edittype: 'text'}],

Надеюсь, это поможет.

0
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)