$(document).ready(function() {
$("#myDataList").jqGrid({
url: "<?= base_url(); ?>getmydata/getCategory",
datatype: "json",
autowidth: true,
mtype: "GET",
colNames: ["Category", "Description", ""],
colModel: [
{name: "c_category", editable: true, width: 1},
{name: "c_description", editable: true, width: 4, edittype: 'textarea'},
{name: "categoryid", key: true, editable: true, hidden: true, editrules: {edithidden: false}}
],
pager: "#myDataListPager",
rowNum: 10,
rowList: [10, 20, 30],
sortname: "c_category",
sortorder: "asc",
height: 'auto',
viewrecords: true,
gridview: true,
caption: "",
editurl: "<?= base_url(); ?>getmydata/c_action"
});
jQuery("#myDataList").jqGrid('navGrid', '#myDataListPager', {add: true, edit: true, del: true, search: true},
{closeAfterEdit: true}, {closeAfterAdd: true}, {
beforeShowForm: function($form) {
$("td.delmsg", $form[0]).html("Do you want to delete the row with <b>id=" +
$("#myDataList").jqGrid('getGridParam', 'selrow') + "</b>?");
},
afterSubmit: function(response) {
response = $.parseJSON(response.responseText);
alert(response.error);
if (response.error == 0) {
$.openDialog("info", "Successfully deleted ");
} else {
showDialog($('#Dialog'), response.msg, "An error occured");
}
}}
);
});
上面是我的网格代码,当我点击删除id是rowid而不是categoryid时,如何将id设置为categoryid而不是row id。如果response.error为true,我想显示一条对话框消息。当我提醒response.error时,我可以得到正确的结果,但我不知道如何调用对话框来显示。
http://mymoney.webege.com/getmydata/getCategory?_search=false&nd=1408865724728&rows=10&page=1&sidx=c_category&sord=asc&lt; - 这是我获取json数据的URL。
上面是我的返回json,我在点击删除时检查id是顺序的行id。
答案 0 :(得分:0)
您使用key: true
作为列"categoryid"
。所以rowid和categoryid
的值必须相同。您应该发布一个可用于重现问题的testdata示例,或者您可以自己调试代码以了解为什么 rowid和categoryid
在您的情况下有所不同。
afterSubmit
的第二个问题很容易解决。您不应该在afterSubmit
内显示任何对话框。而不是你应该以正确的格式返回所需的信息。表单编辑的afterSubmit
必须返回最多3个项目的数组。如果是删除操作,最多可以有2个项目。如果没有发生错误,那么您应该返回[true]
。如果出现错误,您应该返回[false, "error description"]
。如果您的情况如下,
afterSubmit: function (response) {
var data = $.parseJSON(response.responseText);
return (data != null && data.error !== 0) ? [false, data.msg] : [true];
}