2012-03-29 60 views
0

我已经创建了从服务器加载数据的jqgrid,我能够在网格中查看数据,但是当我尝试扩展并激活onclickSubmit$.jgrid.del我是无法获得实际的记录ID(这在我的情况下是101,102),而不是返回1,2,可能是行索引ID。无法获得实际记录编号

的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": "", 

    } 
    ] 
} 

那么指定ID的JSON读者解决了我的问题,在删除记录,但是当我编辑的记录我POSTDATA参数包含

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

,当我尝试访问它作为postdata.id或postdata.e_info_id则返回undefined,这里是编辑

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


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

关于'onclickSubmit':请仔细阅读您的上一个问题[我的答案](http://stackoverflow.com/a/9923417/315935)。拥有'id'的'postdata'的属性具有* not *名称'id'。在你的情况下它将是'eventGrid_id'。属性名称由网格的“id”和“_id”文本构成:'gridId +“_id”'。 – Oleg 2012-03-29 14:18:31

+0

如果您要为问题添加“jquery”或“javascript”标记,则代码将以JavaScript特定颜色标记。 – Oleg 2012-03-29 15:46:09

回答

0

如果您使用的jqGrid jsonReader: { repeatitems: false }不知道哪些值应使用尽可能如此命名的rowid。 Rowid是网格中<tr>元素的id属性的值。

为了解决这个问题,你有两种选择:

  1. 来定义e_info_idkey: true财产。
  2. 要使用id: "e_info_id"jsonReader(见基督教的答案)

id财产在jsonReader的默认值是id: "id"

知道,id值必须在页面上独特是很重要的。例如,如果您在页面上有两个网格并且都具有带整数ID的信息,则可能会发生冲突。在这种情况下,您可以使用idPrefix选项。在id属性值<tr>元素的值将从idPrefix(其应该在两个原因页中应该不同)和“标准”id构造。

2

的onclickSubmit望着文档here我想你应该在指定id属性名称jsonReader。

jsonReader : { repeatitems: false, id: "e_info_id" } 
+0

请看我编辑 – Hunt 2012-03-29 14:11:43

+0

+1。你的回答是绝对正确的。我在答案中添加了其他信息。 – Oleg 2012-03-29 14:21:12

+0

@Hunt:如果您想在未来收到有关您的问题的答案,您也应该投票赞成这样的答案。您可以阅读[常见问题](http:// stackoverflow。com/faq#howtoask)非常简单的规则:“**当你看到你的问题的新答案时,通过点击答案**左边的向上指向箭头来投票赞成有用的答案。通常情况下,您应该自行投票回答所有问题,这对您有所帮助。其他问题的投票答案有助于同一页面的其他访问者。 – Oleg 2012-03-29 14:25:05