首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高jQGrid性能

提高jQGrid性能
EN

Stack Overflow用户
提问于 2017-04-09 06:39:13
回答 1查看 986关注 0票数 0

嗨,我使用的是jQGrid免费版本4.1.2,我面临的问题是加载树网格。我将数据存储在数组对象中,并将其加载到树网格中。当我加载少量的数据时,它工作得很好,但是当数据更多的时候,它需要花费大量的时间来呈现(在列中设置数据)。数组对象的长度约为1700。

我正在使用下面的参数加载网格

代码语言:javascript
复制
 grid.jqGrid({
            datatype: "jsonstring",
            datastr: mydata,  //array object
            colNames: scopes.gridheadercolumns, //passed externally
            colModel: scopes.gridcolumns,      
            height: height, //passed externally
            gridview: true,
            loadonce: false,
            viewrecords: viewrecordslist,
            rowList: rowlists,
            rowNum: rowNum,
            multiSort: true,
            ignoreCase: true,
            grouping: gpenable,
            sortorder: sortorder,  //passed externally
            autowidth: true,
            sortable: false,
            pager: "#" + pagerid,   //passed externally
            treeGrid: true,
            treeGridModel: 'adjacency',
            treedatatype: "local",
            ExpandColumn: 'name',
            sortname: 'name',
            jsonReader: {
                repeatitems: false,
                root: function (obj) { return obj; },
                page: function () { return 1; },
                total: function () { return 1; },
                records: function (obj) { return obj.length; },
                expanded_field: "true"
            },
            loadComplete: function () {
                var ts = this;

                if (ts.p.reccount === 0) {
                    $(this).hide();
                    emptyMsgDiv.show();
                } else {
                    $(this).show();
                    emptyMsgDiv.hide();
                }

            }
        });

我已经改变了上面的一些属性,比如

代码语言:javascript
复制
loadonce: true,
gridview: false,
treedatatype :"jsonstring" 

在这里,我可以从函数中删除哪些属性以使其加载更快,或者我还能做些什么来提高性能,这是我需要的。

而且,这个问题在IE 11中特别出现,而不是在其他浏览器中。

任何帮助都将不胜感激。谢谢

编辑:我忘了包括一点,当我们多次加载网格时,网格也会变得相当慢。如何确保性能不会因多个请求而下降。

tdynamicLink格式化程序的代码-

此处不使用孔托、url和cellattr。

我只是在应用一个类,使它看起来像一个链接(我只是在该类中使文本下划线和光标指向指针),并调用函数getPopup来打开模式窗口。

代码语言:javascript
复制
 if (formatter == "editLink") {

                    var subpopup = grid_row_data[j]._attr.popupid._value;
                    var xmlname = grid_row_data[j]._attr.popxml._value;
                    formatter= 'dynamicLink';
                    formoption= {
                            url: function (cellValue, rowId, rowData) {
                                return '/' + rowId + '?' + $.param({
                                tax: rowData.col_nigo,
                                invdate: rowData.col_igo_nigo,
                                closed: rowData.col_phireq
                            });
                        },
                        cellValue: function (cellValue, rowId, rowData) {
                            return  '<span class="pointer">' + cellValue + '</span>'; 
                            },
                        onClick: function (rowId, iRow, iCol, cellValue, e) {
                            $("#"+subpopup).css("display", "block");
                            $("#" + popupid).css("opacity", "0.99");
                            $scope.getPopup(rowId, iRow, iCol,gridid ,xmlname,rowId);                      
                        }
                    };
                    cellattr = function (rowId, cellValue, rawObject) {
                        var attribute = ' title="' + rawObject.name;
                        if (rawObject.closed) {
                            attribute += ' (closed)';
                        }
                        return attribute + '"';
                    };
            }
EN

Stack Overflow用户

回答已采纳

发布于 2017-04-09 10:29:06

对不起,但是您使用的大多数技巧应该没有价值,treedatatype: "jsonstring"的使用应该是不正确的。TreeGrid在初始化期间重置许多参数,因为确实需要一些特定值。有关详细信息,请参阅代码的线。例如,loadonce: true只有在从服务器(datatype: "json"datatype: "json")加载数据时才具有一定的价值,而对于TreeGrid则不然。我建议您删除许多未使用的选项来清理代码。应该删除选项gridviewloadoncerowListrowNumgroupingsortabletreedatatype,就像jsonReader (或可能是整个jsonReader)的大部分属性一样。

关于你的主要问题。我只看到了提高TreeGrid性能的两种方法

  1. 从4.1.2升级到自由jqGrid 4.10.0。它提高了网格的创建/加载性能,从本质上提高了节点的折叠/扩展性能。
  2. 创建并填充隐藏的TreeGrid,然后使其可见。您可以将用于网格的<table>放置在div中。div应该具有与窗口宽度相对应的宽度。div应该是可见的。您应该使用jQuery.width获取div的宽度,并使用teh值作为jqGrid的width值。然后隐藏divjQuery.hide有关。现在您可以创建TreeGrid,它将不可见。最后,您应该使外部div可见,TreeGrid也是可见的。
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43303806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档