jQgrid删除id返回行id

时间:2014-08-24 06:47:24

标签: php jqgrid

 $(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。

enter image description here

1 个答案:

答案 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];
}