问题是在jqgrid中加载数据需要很长时间,目前我正在使用
for(var i=0;i<homeFileList.length;i++)
jQuery("#tblHomeFileList").jqGrid('addRowData',i+1,homeFileList[i]);要将数据加载到网格中,但是由于数据是迭代的,需要花费大量的时间,是否有任何方法可以更快地加载数据?
我阅读了addRowData甚至可以同时插入多个数据(阅读链接),我认为它可能会更快,但它不会将任何东西插入到我的网格中。
看我下面的代码。
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);
});
});
});在奥列格的评论之后更新
//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中的巨大数据)
<?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>发布于 2011-12-02 11:12:31
您可以使用data参数的jqGrid:
$("#tblHomeFileList").jqGrid({
datatype: "local",
data: homeFileList,
...
});见演示。在这种情况下,网格的全部数据将放在网格中,第一页将被绘制。我相信,您将立即看到大量行的性能差异。
我建议您在网格中另外包括formatter和sorttype属性。例如,包含整数数据的'fsize'的定义可以是:
{name: 'fsize', index: 'fsize', width: 90, formatter: 'integer', sorttype: 'int'}发布于 2011-12-02 07:25:10
如果您可以将数据放入JSON/XML中,则可以使用无文档化的jqGrid.p.data属性快速添加数据,并只设置它,然后重新加载网格。您需要确保您的数据已经符合您映射的列。
if(_theGrid == undefined) {
_theGrid = $("#list3").jqGrid({...});
}
else {
_theGrid.p.data = data;
$(_theGrid).trigger('reloadGrid');
}https://stackoverflow.com/questions/8352790
复制相似问题