Использование пар ключ / значение для данных ячейки jqGrid - PullRequest
4 голосов
/ 14 января 2010

У меня есть jqGrid, определенный как:

$("#tableFeedbackReports").jqGrid({
            url: '/FeedbackReports/GetFeedbackReport',
            datatype: 'json',
            colNames: ['ColA', 'ColB', 'ColC', 'ColD'],
            colModel: [{ name: 'ColA', index: 'ColA', width: 60 },
                        { name: 'ColB', index: 'ColB', width: 60 },
                        { name: 'ColC', index: 'ColC', width: 60 },
                        { name: 'ColD', index: 'ColD', width: 60 }, 
/* ... and so on */

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

['value', 'value', 'value']

Можно ли заставить jqGrid принимать пары ключ / значение для данных строки?

[{ 'ColA' : 'value', 'ColB' : 'value', 'ColC' : 'value', 'ColD' : 'value'}]

Итак, когда jqGrid загружает данные, он автоматически связывает данные со столбцом в модели?

Ответы [ 2 ]

4 голосов
/ 14 января 2010

Посмотрите на параметр jsonReader в jqGrid Wiki , в частности на его свойство repeatitems. С этой страницы:

Элемент repeatitems сообщает jqGrid, что информация для данных в строка повторяется - то есть элементы имеют одинаковую ячейку тега, описанную в ячейке элемент. Установка этой опции в ложь инструктирует jqGrid искать элементы в Данные JSON по имени. Это имя из colModel или имя, описанное с опция jsonmap в colModel.

Их пример:

jQuery("#gridid").jqGrid({
...
   jsonReader : {
      root:"invdata",
      page: "currpage",
      total: "totalpages",
      records: "totalrecords",
      repeatitems: false,
      id: "0"
   },
...
});

Который будет обрабатывать данные в следующем формате с парами ключ / значение:

{ 
  totalpages: "xxx", 
  currpage: "yyy",
  totalrecords: "zzz",
  invdata : [
    {invid:"1",invdate:"cell11", amount:"cell12", tax:"cell13", total:"1234", note:"somenote"},
    {invid:"2",invdate:"cell21", amount:"cell22", tax:"cell23", total:"2345", note:"some note"},
  ...

] }

0 голосов
/ 22 марта 2013
 Tag    Description
 total  total pages for the query
 page   current page of the query
 records    total number of records for the query
 rows   an array that contains the actual data
  id    the unique id of the row
cell    an array that contains the data for a row

в http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data

root

элемент. Этот элемент описывает, где начинаются наши данные. Другими словами, это указывает на массив, который содержит данные. Если мы установим JQuery ( "# gridid"). jqGrid ({ ... jsonReader: {root: "invdata"}, ... }); тогда возвращаемая строка должна быть

{ 
  "total": "xxx", 
  "page": "yyy", 
  "records": "zzz",
  "invdata" : [
    {"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
    {"id" :"2", "cell":["cell21", "cell22", "cell23"]},
  ...
  ]
}

так что, если вы выбираете путь значения ключа; ячейка не должна содержаться в строке json, но должна быть строка;

jQuery("#gridid").jqGrid({
...
   jsonReader : {
      repeatitems: false,
   },
...
});

Полученные данные должны быть:

 {"page":"1","total":1,"records":"1",
"rows": [
    {"invid" : "1","invdate":"cell11", "amount" :"cell12", "tax" :"cell13", "total" :"1234", "note" :"somenote"},
    {"invid" : "2","invdate":"cell21", "amount" :"cell22", "tax" :"cell23", "total" :"2345", "note" :"some note"}]

см. Ключевое слово "id":"1", "cell", и данные связанного массива (key value) находятся под ключевым словом rows;

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