【发布时间】:2012-05-15 08:52:14
【问题描述】:
我正面临这种情况。我有一个大约 3500 行的网格。而且这个网格应该是跨浏览的,特别是在 IE6(这是客户端的浏览器......不幸的是)。
当我在 IE6 中进行测试时,加载时间比其他浏览器要多。看到这个后,我决定优化查询,现在它只加载必要的数据库字段,但在 IE 中加载仍然很慢。我的数据类型是JSON。
除了这个不便之外,我发现所有浏览器的过滤速度都很慢(在 IE6 中比其他浏览器需要更多时间)。我在过滤器中使用选项searchOnEnter : false,在 IE6 中按列排序也很慢。
当我使用按列过滤和排序时,我可以做些什么来减少加载时间?我仍在尝试寻找可能的解决方案,但我的想法已经不多了。
提前致谢。
更新:jQGrid代码
var myGrid = $('#bookingsList');
myGrid.jqGrid({
jsonReader : { root: "rows", repeatitems: false, id: "0", cell: ""},
url:'/WebBooking/json/bookingListAct.action',
datatype: 'json',
mtype: 'POST',
colNames:['Id','Site','CompanyId','Created'],
colModel :[
{name:'bestillingId', index:'bestillingId', width:45, sorttype: 'int'},
{name:'stedName', index:'stedName', width:90},
{name:'firmaId', index:'firmaId', width:200, hidden:true},
{name:'creationDate', index:'creationDate', width:105, search:false}
],
pager: '#pager',
rowNum:10,
rowList:[10,50,100,150,200,250,500],
sortname: 'bestillingId',
sortorder: 'desc',
viewrecords: true,
gridview: true,
loadonce: true,
sortable: true,
rownumbers: true,
autoencode: true,
ignoreCase: true,
shrinkToFit:false,
width: 1050,
height: '100%'
});
更新:JSON字符串(一部分)
{"page":"1","records":"3180","rows":[{"stedName":"Mongstad","bestillingId":"2","firmaName":"Reinertsen AS","creationDate":"13.09.11 09:01"}],"total":"318"}
【问题讨论】:
-
您应该始终发布您在此类问题中使用的 jqGrid 代码。来自服务器的 JSON 响应示例(至少有一行)也很有帮助。您应该了解实施细节而不是常见的描述您所做的事情对于解决性能问题很重要。听起来您使用
loadonce: true和客户端过滤。为什么不在服务器上执行此操作?如果您需要使用非常慢的 JavaScript 引擎(如 IE6)来支持慢速客户端,这一点尤其重要。 -
@Oleg 我已经用代码和 JSON 响应更新了我的问题。实际上我正在使用
loadonce:true。关于为什么我不在服务器上过滤是因为老实说我不知道该选项存在。如果您建议将此作为一种可能的解决方案,您能否给我一些示例,说明如何在服务器上进行此过滤? - 至少客户端和服务器端之间的集成 - (我正在使用 Java,但如果示例使用其他语言,则无关紧要)。谢谢
标签: sorting jqgrid load filtering