首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jqGrid中快速加载数据

如何在jqGrid中快速加载数据
EN

Stack Overflow用户
提问于 2011-12-02 06:58:41
回答 2查看 7.7K关注 0票数 0

问题是在jqgrid中加载数据需要很长时间,目前我正在使用

代码语言:javascript
复制
for(var i=0;i<homeFileList.length;i++)
        jQuery("#tblHomeFileList").jqGrid('addRowData',i+1,homeFileList[i]);

要将数据加载到网格中,但是由于数据是迭代的,需要花费大量的时间,是否有任何方法可以更快地加载数据?

我阅读了addRowData甚至可以同时插入多个数据(阅读链接),我认为它可能会更快,但它不会将任何东西插入到我的网格中。

看我下面的代码。

代码语言:javascript
复制
var homeFileList=[];
$(xml).find('IPC').each(function(){ 
    $(this).children('homefilelist').each(function(){ 
        $(this).children('homefilelist_info').each(function(){ 
            var row={};
            isPresent=true;
            row.permission=$(this).attr('permission');
            row.hardlink=$(this).attr('hardlink');
            row.owner=$(this).attr('owner');
            row.group=$(this).attr('group');
            row.fsize=$(this).attr('fsize');
            row.month=$(this).attr('month');
            row.date=$(this).attr('date');
            row.time=$(this).attr('time');
            row.filename=$(this).attr('filename');
            homeFileList.push(row);
        });
    });
});

在奥列格的评论之后更新

代码语言:javascript
复制
//HomeFileList
if(homeFileList.length>0)
{
    jQuery("#tblHomeFileList").jqGrid({
        datatype: "clientSide",
        colNames:['Permission','Hardlink','Owner','Group','Size','Month','Date','Year/Time','Filename'],
        colModel:[
            {name:'permission',index:'permission', align:"left",width:"100px"}, 
            {name:'hardlink',index:'hardlink', align:"left", width:"80px"},
            {name:'owner',index:'owner', align:"left",width:"100px"},
            {name:'group',index:'group', align:"left"},
            {name:'fsize',index:'fsize', align:"left", width:"90px"},
            {name:'month',index:'month', align:"left",width:"100px"},   
            {name:'date',index:'date', align:"left", width:"80px"},
            {name:'time',index:'time', align:"left",width:"100px"},
            {name:'filename',index:'filename', align:"left"}
        ],

                    pager : '#HomeFileListGridpager',
        rowNum:10,
        rowList:[10,50,100],
        scrollOffset:0,
        height: 'auto',
        autowidth:true,
        viewrecords: true,
        gridview: true
            });

    /*This for loop loads my data from homeFileList into grid
for(var i=0;i<homeFileList.length;i++)
        jQuery("#tblHomeFileList").jqGrid('addRowData',i+1,homeFileList[i]);*/

    alert($.isArray(homeFileList)); //returns true


    jQuery("#tblHomeFileList").jqGrid('addRowData',homeFileList);


    jQuery("#tblHomeFileList").setGridParam({rowNum:10}).trigger("reloadGrid");
}
else
    gridUnavailable("#tblHomeFileList");

XML (我已经缩短了下面的xml,因为它是homefilelist中的巨大数据)

代码语言:javascript
复制
<?xml-stylesheet type="text/xsl" href="client9.xsl"?><client version="1.0"><IPC>
<homefilelist>
    <homefilelist_info permission='-rwxr-xr-x' hardlink='1' owner='asimon' group='support' fsize='61597' month='Mar' date='22' time='2011' filename='libpmwspsvrcmn.so' />
    <homefilelist_info permission='-rwxr-xr-x' hardlink='1' owner='asimon' group='support' fsize='21778' month='Mar' date='22' time='2011' filename='libpmorablk.so' />
    <homefilelist_info permission='-rwxr-xr-x' hardlink='1' owner='asimon' group='support' fsize='36226' month='Mar' date='22' time='2011' filename='libpmjvm.so' />
</homefilelist>
</IPC>
</client>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-02 11:12:31

您可以使用data参数的jqGrid:

代码语言:javascript
复制
$("#tblHomeFileList").jqGrid({
    datatype: "local",
    data: homeFileList,
    ...
});

演示。在这种情况下,网格的全部数据将放在网格中,第一页将被绘制。我相信,您将立即看到大量行的性能差异。

我建议您在网格中另外包括formattersorttype属性。例如,包含整数数据的'fsize'的定义可以是:

代码语言:javascript
复制
{name: 'fsize', index: 'fsize', width: 90, formatter: 'integer', sorttype: 'int'}
票数 1
EN

Stack Overflow用户

发布于 2011-12-02 07:25:10

如果您可以将数据放入JSON/XML中,则可以使用无文档化的jqGrid.p.data属性快速添加数据,并只设置它,然后重新加载网格。您需要确保您的数据已经符合您映射的列。

代码语言:javascript
复制
if(_theGrid == undefined) {
    _theGrid = $("#list3").jqGrid({...});
}
else {
    _theGrid.p.data = data;
    $(_theGrid).trigger('reloadGrid');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8352790

复制
相关文章

相似问题

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