jqGrid JSON - Почему jqGrid не нравится этот JSON?И кто-то может предоставить сценарий и разметку, которая будет работать с этой строкой? - PullRequest
0 голосов
/ 12 мая 2011

Вот JSON:

{
    "page": "1",
    "total": "1",
    "records": "2",
    "rows": [
        {
            "Id": 3,
            "FirstName": "Test",
            "LastName": "Testerson",
            "CustomerNumber": "1234",
            "EmailAddress": "test@test.com",
            "Subject": "Test1",
            "OrderNumber": "4321",
            "Comments": "This is a test"
        },
        {
            "Id": 4,
            "FirstName": "Test2",
            "LastName": "Testerson2",
            "CustomerNumber": "2222",
            "EmailAddress": "test@test.com",
            "Subject": "Test1",
            "OrderNumber": "3333",
            "Comments": "This is a test"
        }
    ]
}

Вот мой текущий скрипт и разметка (почему это не работает?):

<table id="list1"></table>
<div id="pager1"></div>
<script type="text/javascript">
    function getData(pdata) {
        var params = new Object();
        params.page = pdata.page;
        params.pageSize = pdata.rows;
        params.sortIndex = pdata.sidx;
        params.sortDirection = pdata.sord;


        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "ScriptServices/PNScriptService.asmx/GetContactRequests",
            data: JSON.stringify(params),
            dataType: "json",
            success: function (data, textStatus) {
                if (textStatus == "success") {
                    var thegrid = $("#list1")[0];
                    thegrid.addJSONData(data.d);
                }
            },
            error: function (data, textStatus) {
                alert('An error has occured retrieving the data.');
            }
        });
    }

    $(document).ready(function () {
        $("#list1").jqGrid({
            datatype: function (pdata) {
                getData(pdata);
            },
            jsonReader: {
                page: "page",
                total: "total",
                records: "records",
                root: "rows",
                id: "Id",
                repeatitems: false
            },
            colNames: ['Id', 'FirstName', 'LastName', 'CustomerNumber', 'EmailAddress', 'Subject', 'OrderNumber', 'Comments'],
            colModel: [
                { name: 'Id', index: 'Id', width: 90 },
                { name: 'FirstName', index: 'FirstName', width: 100 },
                { name: 'LastName', index: 'LastName', width: 100 },
                { name: 'CustomerNumber', index: 'CustomerNumber', width: 80, align: "right" },
                { name: 'EmailAddress', index: 'EmailAddress', width: 100 },
                { name: 'Subject', index: 'Subject', width: 80 },
                { name: 'OrderNumber', index: 'OrderNumber', width: 80, align: "right" },
                { name: 'Comments', index: 'Comments', width: 250, sortable: false }
            ],
            rowNum: 10,
            rowList: [10, 20, 30],
            pager: $('#pager1'),
            sortname: 'Id',
            viewrecords: true, 
            sortorder: "desc",
            caption: "Contact Requests"
        });
    });
</script>

Кстати: приведенная выше строка JSON является точнойстрока, возвращаемая сервисом сценария.Я могу достичь точки останова в моей службе сценариев и получить эту строку, и я могу предупредить строку в вызывающем сценарии ajax об успешном завершении, и строки идентичны.Итак, я знаю, что это не служба сценариев, и я знаю, что эта строка json передается, как показано, в jqGrid.

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Спасибо Олегу за информацию, но получилось следующее:

thegrid.addJSONData(JSON.parse(data.d));

Мне нужно было JSON.parse данные перед передачей их в сетку.

0 голосов
/ 12 мая 2011

Ваша проблема в том, что вы используете очень старый шаблон кода для загрузки данных JSON. Если ваш сервер выдает данные JSON, которые вы разместили, вы можете упростить код до следующего .

В другие ответы вы найдете больше примеров кода на случай, если вы используете ASMX, который генерирует немного другого кода JSON, как вы отправили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...