2011-06-18 91 views
1

我正在使用jqGrid。分页没有得到反映,可能是什么问题?我检查了Firefox 4.1和IE8,但并未在Chrome上显示jqGrid。jqGrid分页问题

var filesystem=[]; 
$(xml).find('file').each(function(){ 
    var row={}; 
    row.total=$(this).attr('total'); 
    row.free=$(this).attr('free'); 
    row.used=$(this).attr('used'); 
    row.percentage=$(this).attr('percentage'); 
    filesystem.push(row); 
}); 


$('#detailTable').empty(); 
$('<div>') 
.attr('id','diskUsageSpan') 
.html('<div class="titleBlue">Configuration&gt;System&gt;Disk Usage</div>'+ 
     '<table id="list1"></table>'+ 
     '<div id="gridpager"></div>'+ 
    '</div>')   
.appendTo('#detailTable');  

更新

jQuery("#list1").jqGrid({ 
    datatype: "clientSide", 
    height: 250, 
     colNames:['id','Total Space','Free Space', 'Used Space', 'Used Percentage'], 
     colModel:[ 
      {name:'id',index:'id', width:90, align:"right"}, 
      {name:'total',index:'total', width:90, align:"right"}, 
      {name:'free',index:'free', width:90, align:"right"}, 
      {name:'used',index:'used', width:90, align:"right"}, 
      {name:'percentage',index:'percentage', width:120, align:"right"} 
     ], 
     pagination:true, 
     pager : '#gridpager', 
     rowNum:10, 
    viewrecords: true, 
    gridview: true, 
    edit:false, 
    add:false, 
    del:false 

}); 



for(var i=0;i<filesystem.length;i++) 
    jQuery("#list1").jqGrid('addRowData',i+1,filesystem[i]); 

jQuery("#list1").setGridParam({rowNum:10}).trigger("reloadGrid"); 
+0

@doctrey:请看看问题 – Ricky

+0

@Tomas:我创建了一个数据集来匹配jqGrid,并且它也加载,但分页不起作用。你可以请看看。谢谢 – Ricky

+0

@Oleg:我跟着你的答案[这里](http://stackoverflow.com/questions/3491963/pagination-problem-in-jqgrid-with-array-data),但仍然没有运气,你可以看看也是问题。谢谢:) – Ricky

回答

2

的问题是,你应该的addRowData圣人,而不是之前调用后reloadGrid

,最好的办法是使用data参数,而不是:

var grid = jQuery("#list1"); 
grid.jqGrid({ 
    datatype: "local", 
    data: filesystem, // here!!! 
    height: "auto", // it can be better if you don't need the fix hight 
    colNames: ['Total Space','Free Space', 'Used Space', 'Used Percentage'], 
    colModel: [ 
     {name:'total',index:'total', width:90, align:"right"}, 
     {name:'free',index:'free', width:90, align:"right"}, 
     {name:'used',index:'used', width:90, align:"right"}, 
     {name:'percentage',index:'percentage', width:120, align:"right"} 
    ], 
    pager : '#gridpager', 
    rowNum:10, 
    rowList:[10,20,30], 
    viewrecords: true, 
    gridview: true 
}); 
grid.jqGrid('navGrid','#gridpager',{edit:false,add:false,del:false}); 

无需重装格。

如果您填写rowfilesystem我建议您在row中包含额外的id属性,该属性将用作rowid。页面上使用的所有HTML元素的ID值必须是唯一的。

而不是重新创建div#detailTable包含像你一样的电话号码GridUnload(例如here)。你真的需要重新创建网格,而不是只更改网格包含?要更改网格包含,您可以设置data参数jqGrid相对于setGridParam和调用.trigger("reloadGrid")

+0

感谢它解决了我的问题:) – Ricky

+0

好吧,我添加了一个'ID',但如何使它不出现在表中? – Ricky

+1

@Ricky:不客气!属性名称必须是“id”而不是“ID”。如果你想使用另一个属性名,你可以使用'localReader:{id:“ID”}'。问题是'

'中的每个''元素都会收到这个id。 'id'将**不显示**,但是在[onSelectRow](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events#list_of_events)或类似[ setSelection](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods)网格行将由rowid标识。您可以使用IE或Chrome的开发工具来检查包含的行并查看ID。 – Oleg