0

目前我在 jqgrid 中面临一个问题。使用 ajax 调用加载网格后,我将数据类型更改为本地网格完成。在那之后我试图过滤但我得到零记录。任何帮助表示赞赏。

以下是我的代码: -

$("#orderformtable").jqGrid(
            {
                url : "getOrderFormProductList.htm?VENDORID=" + VENDORID
                        + "&LOCATIONID=" + LOCATIONID,
                mtype : 'GET',
                datatype : "json",
                colNames : [ 'Product', 'Pipeline Qty.', 'A', 'B', 'C',
                        'D', 'Order Qty.' ],
                colModel : [ {
                    name : 'PRODUCT_NAME',
                    index : 'PRODUCT_NAME',
                    width : 80,
                    editable : false,
                    hidden : false,
                    editrules : {
                        required : true
                    },
                    editoptions : {
                        disabled : true,
                        size : "40",
                        maxlength : "70"
                    }

                }, {
                    name : 'PIPELINE_QTY',
                    index : 'PIPELINE_QTY',
                    width : 20,
                    editable : false,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                }, {
                    name : 'MAX_QTY',
                    index : 'MAX_QTY',
                    width : 15,
                    editable : true,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                }, {
                    name : 'INSTOCK_QTY',
                    index : 'INSTOCK_QTY',
                    width : 20,
                    editable : false,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                }, {
                    name : 'VENDOR_PIPELINE',
                    index : 'VENDOR_PIPELINE',
                    width : 20,
                    editable : false,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                }, {
                    name : 'REQUIRED_QTY',
                    index : 'REQUIRED_QTY',
                    width : 20,
                    editable : false,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                }, {
                    name : 'REORDER_QTY',
                    index : 'REORDER_QTY',
                    width : 20,
                    editable : true,
                    search : false,
                    editoptions : {
                        size : "7",
                        maxlength : "6"
                    },
                    editrules : {
                        required : true
                    },
                    align : 'center'
                } ],
                loadonce : true,
                localReader : {
                    repeatitems : true
                },
                hidegrid : false,
                postData : {},
                rowNum : 200,
                rowList : [ 200, 220, 230 ],
                height : 500,
                autowidth : true,
                rownumbers : true,
                pager : '#orderformpagination',
                sortname : 'PRODUCT_NAME',
                viewrecords : true,
                gridview : true,
                sortorder : "asc",
                caption : "",
                emptyrecords : "Empty records",
                loadonce : false,
                gridComplete : function() {
                    $("#orderformtable").setGridParam( {
                        datatype : 'local',
                        ignoreCase : true
                    });
                },
                loadComplete : function() {

                    var rowid = jQuery("#orderformtable").jqGrid(
                            'getDataIDs');
                    for ( var i = 0; i < rowid.length; i++) {

                        $('#orderformtable').jqGrid('editRow', rowid[i]);
                    }
                }
            });

下面是我的 jsonarray 重排表单控制器:-

{
"total": 1,
"rows": [
    {
        "cell": [
            "Ball Pen",
            4,
            100,
            10,
            0,
            90
        ],
        "id": "1220"
    },
    {
        "cell": [
            "BATTERY DURACELL 9V PER PC",
            1,
            50,
            10,
            0,
            40
        ],
        "id": "1101"
    },
    {
        "cell": [
            "Brown Tape 2 inch per pc",
            0,
            30,
            10,
            0,
            20
        ],
        "id": "1108"
    },
    {
        "cell": [
            "CELLO TAPE 1 INCH- PER PC",
            0,
            80,
            10,
            0,
            70
        ],
        "id": "1115"
    },
    {
        "cell": [
            "CUTTER PAPER MEDIUM",
            0,
            25,
            10,
            0,
            15
        ],
        "id": "1122"
    },
    {
        "cell": [
            "Scissor big (per pc)",
            0,
            0,
            0,
            0,
            0
        ],
        "id": "1199"
    }
],
"records": 6,
"page": 1

}

4

1 回答 1

0

我认为您遇到的主要问题是 和 的loadonce: true使用loadonce: false。定义具有相同属性的对象定义两次通常会被解释为错误,但如果 Web 浏览器确实将属性的值解释为,loadonce: false那么您可能会遇到您描述的问题。

datatypeto 'local'inside of的设置gridComplete非常糟糕。可能你从一些非常古老的代码示例中得到了诀窍。如果你使用loadonce: true那么

  1. 来自服务器的数据将保存在本地,因此可以在本地搜索/过滤数据。
  2. datatype在首次从服务器加载数据并本地保存数据自动更改为。"local"

如果设置datatype'local'inside ,gridComplete则从服务器加载的数据不会保存在本地。所以你不能使用数据的本地过滤。

此外,我建议您通过使用列模板来减少代码。例如,您可以使用cmTemplate以下项更改任何属性的默认值colModel(请参阅答案)。您还可以删除许多具有默认值的选项 ( postData: {}, localReader: { repeatitems: true }, sortorder : "asc", mtype : 'GET', )。caption : ""结果,您的代码可能会被重写为以下内容

$("#orderformtable").jqGrid({
    url: "getOrderFormProductList.htm",
    postData: {
        VENDORID: function () { return VENDORID; },
        LOCATIONID: function () { return LOCATIONID; }
    },
    datatype: "json",
    colNames: [ 'Product', 'Pipeline Qty.', 'A', 'B', 'C', 'D', 'Order Qty.' ],
    colModel: [
        { name: 'PRODUCT_NAME', width: 80, align: 'left' },
        { name: 'PIPELINE_QTY' },
        { name: 'MAX_QTY', width: 15, template: 'myIntTemplate' },
        { name: 'INSTOCK_QTY' },
        { name: 'VENDOR_PIPELINE'},
        { name: 'REQUIRED_QTY' },
        { name: 'REORDER_QTY', editable: true, search: false }
    ],
    cmTemplate: { width: 20, align: 'center', editrules: { required: true },
        editoptions: { size: "7", maxlength: "6" }
    },
    loadonce: false,
    hidegrid: false,
    rowNum: 200,
    rowList: [ 200, 220, 230 ],
    height: "auto",
    autowidth: true,
    rownumbers: true,
    pager: '#orderformpagination',
    sortname: 'PRODUCT_NAME',
    viewrecords: true,
    gridview: true,
    emptyrecords: "Empty records",
    ignoreCase: true,
    loadComplete: function() {
        var i, $self = $(this), rowids = $self.jqGrid('getDataIDs');
        for (i = 0; i < rowids.length; i++) {
            $self.jqGrid('editRow', rowids[i]);
        }
    }
});
于 2013-04-17T08:16:05.707 回答