не может получить фактический идентификатор записи - PullRequest
0 голосов
/ 29 марта 2012

Я создал jqgrid, который загружает данные с сервера, я могу просматривать данные в сетке, но когда я пытаюсь расширить и запустить onclickSubmit из $.jgrid.del, я не могу получить фактический идентификатор записи (в моем случае это 101, 102) вместо того, чтобы он возвращал 1, 2, может быть идентификатором индекса строки.

JqGrid

jQuery("#eventGrid").jqGrid({
    url:"/eventAllInfo",
    datatype: "json",
    restful:  true,
    mtype: 'GET',
    width:900,

    colNames:['id','title', 'description'],
    colModel:[ 
        {name:'e_info_id',index:'e_info_id', width:60, sorttype:"int",editable:true,editoptions:{size:10}},
        {name:'e_meta_title',index:'e_meta_title', width:90,editable:true,editoptions:{size:10}},
        {name:'e_meta_description',index:'e_meta_description', width:100,editable:true,editoptions:{size:10}},          
    ],
    rowNum:10, rowList:[10,20,30], 
    jsonReader : { repeatitems: false },
    pager: '#pager',        
    caption: "Show Events"
});

Ответ JSON

{
  "success": true,
  "message": "Records Retrieved Successfully -EventAllInfo",
  "page": "1",
  "total": 1,
  "records": "2",
  "rows": [
    {
      "e_info_id": "101",
      "e_meta_title": "Oracle Business Summit",
      "e_meta_description": null,
      "e_meta_img": null,
      "e_meta_video": null,

    },
    {
      "e_info_id": "102",
      "e_meta_title": "Expo 2014 - Environment",
      "e_meta_description": "",
      "e_meta_img": "",
      "e_meta_video": "",

    }
  ]
}

Хорошо, указание идентификатора в json reader решило мою проблему с удалением записи, но когда я редактирую запись, мой аргумент postdata содержит

e_info_id: "101"
e_meta_description: ""
e_meta_title: "Oracle Business Summit"
id: "101"
oper: "edit"

и когда я пытаюсь получить доступ к нему как postdata.id или postdata.e_info_id, он возвращает неопределенное значение, это onclickSubmit для редактирования

 onclickSubmit: function (options, postdata) {
        console.log(postdata);
        console.log(postdata.id); //undefined


        options.url = options.editurl +'/' + encodeURIComponent(postdata.id);
    }

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Глядя на документы здесь Я думаю, вы должны указать имя вашего свойства id в jsonReader.

jsonReader : { repeatitems: false, id: "e_info_id" }
0 голосов
/ 29 марта 2012

Если вы используете jsonReader: { repeatitems: false }, jqGrid не знает, какие значения он должен использовать в качестве так называемого rowid. Rowid - это значение атрибута id элементов <tr> в сетке.

Чтобы устранить проблему, у вас есть два варианта:

  1. Чтобы определить key: true свойство в столбце e_info_id.
  2. Чтобы использовать id: "e_info_id" в jsonReader (см. Ответ христианина)

Значением по умолчанию для свойства id в jsonReader является id: "id".

Важно знать, что значение id должно быть уникальным на странице. Если, например, у вас есть две сетки на странице, и у обеих есть информация с целочисленными идентификаторами, у вас могут возникнуть конфликты. В этом случае вы можете использовать опцию idPrefix. В случае, если значение атрибута id элементов <tr> будет построено из idPrefix (которое должно отличаться на обеих страницах причины) и из "стандартного" id.

...