我遇到了jqGrid删除机制的问题,因为它只以POST数据的形式发送"oper"和"id"参数(id是表的主键).
问题是,我需要根据id和另一个列值删除一行,比方说user_id.如何将此user_id添加到POST数据?
我可以总结一下这个问题如下:
示例代码:
jQuery("#tags").jqGrid({
url: "subgrid.process.php,
editurl: "subgrid.process.php?,
datatype: "json",
mtype: "POST",
colNames:['id','user_id','status_type_id'],
colModel:[{name:'id', index:'id', width:100, editable:true},
{name:'user_id', index:'user_id', width:200, editable:true},
{name:'status_type_id', index:'status_type_id', width:200}
],
pager: '#pagernav2',
rowNum:10,
rowList:[10,20,30,40,50,100],
sortname: 'id',
sortorder: "asc",
caption: "Test",
height: 200
});
jQuery("#tags").jqGrid('navGrid','#pagernav2',
{add:true,edit:false,del:true,search:false},
{},
{mtype:"POST",closeAfterAdd:true,reloadAfterSubmit:true}, // add options
{mtype:"POST",reloadAfterSubmit:true}, // del options
{} // search options
);
Run Code Online (Sandbox Code Playgroud)
Ole*_*leg 18
这不成问题.有不同的方法来做你需要的.最直接的方法是使用serializeDelData功能.删除行的jqGrid代码如下所示
var ajaxOptions = $.extend({
url: rp_ge.url ? rp_ge.url : $($t).jqGrid('getGridParam','editurl'),
type: p.mtype,
data: $.isFunction(p.serializeDelData) ? p.serializeDelData(postd) : postd,
complete:function(data,Status){
//...
},
error:function(xhr,st,err){
//...
}
}, $.jgrid.ajaxOptions, p.ajaxDelOptions);
$.ajax(ajaxOptions);
Run Code Online (Sandbox Code Playgroud)
所以你可以定义你自己的serializeDelData功能,它可以满足你的需求:
{mtype:"POST", reloadAfterSubmit:true, serializeDelData: function (postdata) {
var rowdata = jQuery('#tags').getRowData(postdata.id);
// append postdata with any information
return {id: postdata.id, oper: postdata.oper, user_id: rowdata.user_id};
}}, // del options
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你想自己生成发布到服务器的数据,只需返回一个字符串而不是一个对象.然后数据将由jQuery.ajax发布而不做任何更改.
如果您希望不在发布的数据中添加其他信息,但在URL中可以执行此操作onclickSubmit.我在服务器端使用例如RESTfull服务,并删除我使用空主体的DELETE HTTP请求的项目.所有参数都放在URL中.相应的代码如下所示:
{mtype:"DELETE", reloadAfterSubmit:true, serializeDelData: function (postdata) {
return ""; // the body MUST be empty in DELETE HTTP requests
}, onclickSubmit: function(rp_ge,postdata) {
var rowdata = jQuery('#tags').getRowData(postdata.id);
rp_ge.url = 'subgrid.process.php/' + encodeURIComponent(postdata.id) +
'?' + jQuery.param ({user_id: rowdata.user_id});
}}, // del options
Run Code Online (Sandbox Code Playgroud)
这就是我如何使用jqGrid在删除时向POST添加更多数据:
var grid = $("#grid").jqGrid(... //make your grid
$("#grid").jqGrid('navGrid', '#pager', {add:false, edit:false, del:true},
{},
{},
{delData: {
name: function() {
var sel_id = grid.jqGrid('getGridParam', 'selrow');
var value = grid.jqGrid('getCell', sel_id, 'colName');
return value;
}
}
},
{},
{});
Run Code Online (Sandbox Code Playgroud)
这将返回一个post数组{id:rowNumber,oper:del,name:someValue}.name是你想如何在post数组中引用你的变量,someValue是你感兴趣的所选行的单元格中的任何内容.
希望这可以帮助!
我有同样的问题。我修复它的方法是将 user_id 作为我的 jsondata 中的第一列。并使用 jqgrid 的 jsonreader 设置,您可以完成它。
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieve_data
查看 jsondata 的 jsonreader 设置。
我用:
jsonReader: { cell: "", id: "0" }
Run Code Online (Sandbox Code Playgroud)
我的数据就像
{ totalpages: "xxx", currpage: "yyy", totalrecords: "zzz",
invdata : [
{"userid","cell12", "cell13", "cell14"},
{"userid","cell22", "cell23", "cell24"},
...
]
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我更新一行或删除一行,我将获得用户 ID。希望这对你有用!
| 归档时间: |
|
| 查看次数: |
45671 次 |
| 最近记录: |