jqGrid addRowData减慢了进程

时间:2014-08-22 13:59:17

标签: javascript jquery asp.net-mvc-3 jqgrid

我有一个1000条记录的数组,我传递了它的javascript函数。在jqgrid中显示数据需要将近20秒。 我知道addDataRow方法非常慢但我找不到任何其他选择。 有什么方法可以让它更快吗?

脚本:

function GetCommodityGrid(array) {

    //    alert("Methods");
    //    var rows = array;
    alert(rows.length);
    jQuery(document).ready(function () {
        jQuery("#list").jqGrid({
            // url: 'TestGrid/GridData',
            datatype: 'local',
            //        
            colNames: ['COM_NAME', 'COM_CODE', 'DELV_UNITS', 'LOT_SIZE', 'TICK_SIZE', 'TICK_VALUE'],
            colModel: [
        { name: 'COM_NAME', index: 'COM_NAME', width: 90, editable: true },
        { name: 'COM_CODE', index: 'COM_CODE', width: 100, editable: true },
        { name: 'DELV_UNITS', index: 'DELV_UNITS', width: 80, align: "right", editable: true },
        { name: 'LOT_SIZE', index: 'LOT_SIZE', width: 80, align: "right", editable: true },
        { name: 'TICK_SIZE', index: 'TICK_SIZE', width: 80, align: "right", editable: true },
        { name: 'TICK_VALUE', index: 'TICK_VALUE', width: 150, sortable: false, editable: true }
    ],
            rowList: ReturnRowList(),
            //        loadonce: false, // hit only once on the server
            rownumbers: true, // show the numbers on rows
            pager: '#pager',
            sortname: 'COM_NAME',
            viewrecords: true, // show the total records on the end of the page
            editurl: "TestGrid/EditRecord",
            caption: "JSON Example"
        });
        for (var x = 0; x <= rows.length -1; x++) {
            $("#list").addRowData(x, rows[x]);
        }
        //   jQuery("#list").setGridParam({ rowNum: 10 }).trigger("reloadGrid");

        $("#list").jqGrid("navGrid", "#pager", { add: false },
        {   //the Edit options
            closeAfterEdit: true,
            afterSubmit: function (response) {
            // you should return from server OK in sucess, any other message on error
            alert("after Submit");
            if (response.responseText == "OKK") {
                alert("Update is succefully")
                return [true, "", ""]
            }
            else {
                alert("Update failed")
                $("#cData").click();
                return [false, "", ""]
            }
        }
    });

1 个答案:

答案 0 :(得分:1)

一般情况下,将数组传递给data选项应该可以解决问题:

jQuery("#list").jqGrid({
    datatype: 'local',
    data: rows,
    ...
});

根据数组的外观,您可能还需要添加:

...
localReader: { repeatitems: true },
...

在极少数情况下,如果您的数据非常具体(您的问题中未包含这些数据),可能需要对localReader进行一些进一步的更改。