2014-02-05 20 views
0

我正在使用jqGrid并设置了一个操作处理程序,我希望用户能够删除一行。在URL中指定的回调被调用,但我不知道如何将行ID传递给URL处理程序,所以我知道要删除哪一行。如何在jqGrid中删除行时传递ID?

任何人都有解决方案吗?

<script> 
$(document).ready(function() { 
    $("#list2").jqGrid({ 
     url:'datahandler', 
     datatype: "json", 
     colNames:['Name','Description', 'Data (Abbreviated)', 'Actions'], 
     colModel:[ 
      {name:'name',index:'name', width:300, resizeable:true}, 
      {name:'description',index:'description', width:300, resizeable:true}, 
      {name:'data',index:'data', width:600, resizeable:true}, 
      {name : 'actions', sortable:false, index: 'actions', formatter:'actions', 
       formatoptions: { 
        keys: true, 
        editbutton: false, 
        delOptions: { url: 'deleterow' } 
           }} 
     ], 
     rowNum:10, 
     rowList:[10,20,30], 
     pager: '#pager2', 
     sortname: 'name', 
     viewrecords: true, 
     sortorder: "desc", 
     caption:"PVSyst Data", 
    }); 
    $("#list2").jqGrid('navGrid','#pager2',{edit:false,add:false,del:false}); 
}); 
</script> 

回答

1

目前尚不清楚您使用哪种格式来填充网格和使用哪个rowid。如果填充的数据错误并且将使用值1,2,3而不是要在服务器端看到的rowid,则会出现典型错误。以任何方式,上述代码将使用HTTP POST请求到delOptions中指定的URL "deleterow"。数据的格式为delGridRow(参见here)。例如,如果删除了行的id是"123"然后发布到URL "deleterow"的数据将

oper=del&id=123 

你只需要实现在服务器端的id参数读数。如果您想将参数名称从id重命名为myId之类的任何其他文本,则可以使用jqGrid optionprmNames: { id: "myId" }。之后,发布的数据看起来像

oper=del&myId=123 
+0

嗨奥列格,感谢您的评论。我没有在网址或流中的数据中看到此ID。在我的HTML中是否还有额外的东西需要发送ID? –

+0

@fredbasset:没有额外的事情要做。顺便说一句,我添加了您在网格中定义的“actions”列,我可以在[Fiddler](http://www.telerik.com/download/fiddler)中看到完成的HTTP POST请求以及请求包含'oper = del&id = 123'。我建议您使用Fiddler,IE开发工具,Chrome或任何其他工具来跟踪HTTP流量。 – Oleg

+0

更新:我现在通过表单数据获取操作符和标识。然而,id是表行的数字索引,我真正想要的是行的第一列的名称。任何想法如何让网格发送给我? –