如何通过btn点击在jqgrid中获取所有行更改crud

时间:2017-10-17 06:55:16

标签: jquery jqgrid free-jqgrid

嗨,我使用免费的jqGrid 4.15.1

我希望btn点击获取exmaple的所有更改行  3行编辑  2行插入  1行已删除 我使用此代码我想要结果插入此行

我插入新的树行

{ id: "gridad", Name: "Name 4", PackageCode: "83123a", other: "x",> },
  { id: "gridadd", Name: "Name 5", PackageCode: "834",  other: "x", > },
  { id: "gridadd", Name: "Name 6", PackageCode: "83566a", other: "z",  }

编辑此行

>  { id: "10", Name: "Name 122", PackageCode: "83566a1000", other: "z", 
> }

删除此行

> { id: "20", Name: "Name 3", PackageCode: "83432a", other: "y"}, 

这是我的代码

 $(function () {
        "use strict";
        var data = [
                { id: "10", Name: "Name 1", PackageCode: "83123a", other: "x", subobject: { x: "a", y: "b", z: [1, 2, 3]} },
                { id: "20", Name: "Name 3", PackageCode: "83432a", other: "y", subobject: { x: "c", y: "d", z: [4, 5, 6]} },
                { id: "30", Name: "Name 2", PackageCode: "83566a", other: "z", subobject: { x: "e", y: "f", z: [7, 8, 9]} }

            ],

            $grid = $("#packages");

        $grid.jqGrid({
            data: data,
            datatype: "local",
            colModel: [
                { name: "PackageCode", width: 110 },
                { name: "Name", width: 300 }
            ],
            pager: "#packagePager",
            rowNum: 2,
            rowList: [1, 2, 10],
            viewrecords: true,
            rownumbers: true,
            caption: "Packages",
            height: "auto",
            sortname: "Name",
            autoencode: true,
            gridview: true,
            ignoreCase: true,
                  });
        $grid.jqGrid("navGrid", "#packagePager",
            { add: false, edit: false, del: false }, {}, {}, {},
            { multipleSearch: true, multipleGroup: true });
        $grid.jqGrid("filterToolbar", { defaultSearch: "cn", stringResult: true });
    });

此按钮可获取所有更改

$("#customerCodesTableSave").click(function () {
        var gridData = myGrid.jqGrid('getRowData');

        var postData = JSON.stringify(rowdata);
        alert(gridData.length);
        alert(postData);
        for (var i = 0; i < gridData.length; i++) {
            alert(i + "_" + (gridData[i]['id']));

            if (gridData[i].id == $(myGrid)[0].id + "_0")
            {
                alert(gridData[i]['id']);
            }
            //myGrid.jqGrid('saveRow', gridData[i]['id']);

        }

     saveGrid();

    });

1 个答案:

答案 0 :(得分:0)

您可以使用内联编辑的aftersavefunc回调和行删除的afterComplete来收集已添加,已编辑和已删除的行的统计信息。您可以将统计信息保存在jqGrid的自定义选项中。

演示update demo

stat: { // custom option to hold the editing statistics
    edit: 0,
    add: 0,
    del: 0
},
formDeleting: {
    afterComplete: function (jqXHR, postdata) {
        var p = $(this).jqGrid("getGridParam");
        p.stat.del++;
    }
},
inlineEditing: {
    aftersavefunc: function (rowid, jqXhr, postData, options) {
        // postData.oper will be either "add" or "edit"
        var p = $(this).jqGrid("getGridParam");
        p.stat[postData.oper]++;
    }
}

您可以像访问其他jqGrid参数一样获取统计信息:

$("#getStat").click(function () {
    var p = $grid.jqGrid("getGridParam");
    alert("added rows: " + p.stat.add + "\n" +
          "edited rows: " + p.stat.edit + "\n" +
          "deleted rows: " + p.stat.del);
});

原因上面的代码非常简单。您可以使用编辑/添加和删除行而不仅仅是数字的rowid来保存数组。它将允许您保存更准确的统计信息。我的意思是,如果用户多次编辑相同的行,上面最简单的代码将增加stat.edit。如果稍后删除添加/编辑的行,则不会调整stat.addstat.edit。在stat.addstat.editstat.del中保留rowid数组将允许修复保存更准确的统计信息。

相关问题