Загрузка данных json в jqgrid с помощью setGridParam - PullRequest
3 голосов
/ 25 июля 2011

У меня возникают некоторые проблемы при настройке URL-адреса jqgrid с помощью setGridParam.

Я получаю сообщение: "f не определено".

Моя настройка:

       $("#prices").jqGrid({
    colModel: [
           ...
        ],
    pager: jQuery('#pricePager'),
    ajaxGridOptions: { contentType: "application/json" },
    mtype: 'POST',
    loadonce: true,
    rowTotal: 100,
    rowNum: -1,
    viewrecords: true,
    caption: "Prices",
    height: 300,
    pgbuttons: false,
    multiselect: true,
    afterInsertRow: function (rowid, rowdata, rowelem) {
        // ...
    },
    beforeSelectRow: function (rowid, e) {
      // ...
    },
    onSelectRow: function (rowid, status) {
       // ...
    }
}); 

Получение данных:

$("#prices").setGridParam({ datatype: 'json', page: 1, url: '@Url.Action("GridDataPrices")', postData: JSON.stringify(selections) });

$("#prices").trigger('reloadGrid');

Ответ не закодирован json:

{"total":1,"page":1,"records":100,"rows":[{"id":160602948,"StartDate":"\/Date(1311717600000)\/","Duration":7,"Price":1076.0000,"Code":"code"},{"id":160602950,...}]}

Однако я получаю следующее сообщение, используя firebug:

"f не определено"

Сначала я работал с использованием addJSONData, но мне пришлось заменить его, потому что я хочу сохранить локальную сортировку.

Заранее спасибо.

1 Ответ

6 голосов
/ 25 июля 2011

После того, как вы загрузили код, все будет ясно.Ваши основные ошибки:

  • , вы должны включить datatype: 'local' в jqGrid.Значение по умолчанию: «xml».
  • данные JSON имеют именованные свойства, поэтому вы должны использовать jsonReader: { repeatitems: false } (подробности см. в документации )
  • вы используете "ArivalCodeWay""в colModel и" ArrivalCodeWay "в данных JSON.Таким образом, вы должны исправить имя соответствующего столбца jqGrid
  • , чтобы декодировать date из формата "\/Date(1312840800000)\/", вам необходимо включить formatter:'date' в соответствующий столбец.
  • Таким же образомЯ считаю целесообразным включить formatter:'int', sorttype:'int' в столбец «Продолжительность» и sorttype:'number', formatter:'number', formatoptions: { decimalPlaces:4, thousandsSeparator: "," } в столбец «Цена».
  • Если вы используете JSON.stringify, вы должны включить json2.js дляубедитесь, что ваш код будет работать во всех веб-браузерах.

Модифицированную демонстрацию (включая некоторые другие незначительные изменения) вы можете найти здесь .Если вы нажмете кнопку «Нажми меня», будет загружена сетка с содержимым.

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