【问题标题】:jQgrid delete id return row idjQgrid删除id返回行id
【发布时间】:2014-08-24 06:47:24
【问题描述】:
 $(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 为真,我想显示一条对话框消息。当我提醒response.error时,我可以得到正确的结果,但是我不知道如何调用对话框来显示。

http://mymoney.webege.com/getmydata/getCategory?_search=false&nd=1408865724728&rows=10&page=1&sidx=c_category&sord=asc

上面是我的返回json,我在点击删除时检查id是顺序的行id。

【问题讨论】:

  • 使用jsfiddel会帮助我们理解
  • 您发布的 URL 中的 JSON 数据包含 idcategoryid 并且两者具有相同的值。目前尚不清楚您期望的 categoryid 值以及将发送的 rowid 是什么。你能举个例子吗?例如,如果删除带有id=7 的项目,您应该在删除操作期间发布7
  • 但在网格表中,id 是按顺序排列的,而不是 json 返回的。在 json 中,id 序列是 5 11 6 9 ... 但在网格中,序列是 1 2 3 4 .....

标签: php jqgrid


【解决方案1】:

您使用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];
}

【讨论】:

  • 如果我将数据按升序排序会影响吗?
  • @user3687053:你不使用loadonce: true。所以排序只会向服务器发出一个带有相应sidxsord 参数的请求。服务器进行排序并返回排序后的数据。 jqGrid 只是用绝对新的数据重新填充网格。如果您正确填写数据,您将没有问题。
  • 我添加 loadonce:true 仍然是相同的 rowid 仍然在序列中
  • @user3687053:顺便说一下,您可以colModel中删除隐藏的“categoryid”,并简化服务器返回的数据格式。例如,{ "id": "10", "cell": ["Medical", "", "10"]} 可以更改为 { ["Medical", "", "10"]}。需要在jqGrid中添加jsonReader: {cell: "", id: 2}参数才能读取新格式的数据并正确填写rowid。
  • 点击删除时是否可以传入id或者设置id?
猜你喜欢
  • 2017-02-25
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
相关资源
最近更新 更多