Guriddo jqGrid JS版本:4.7.0。
(function ($) {
'use strict';
$(function () {
$('#jqGrid').jqGrid({
url: '../StrictRoutesRebirth/StrictRoutes/',
mtype: 'GET',
datatype: 'json',
colModel: [{
label: 'id',
name: 'id',
hidden: false,
key: true
},
{
label: 'Примечание',
index: 'note',
name: 'note'
},
{
label: 'Логин',
index: 'userLogin',
name: 'userLogin',
hidden: true,
edittype: 'text'
}],
scroll: 1,
height: 500,
width: 500,
rowNum: 50,
rownumbers: true,
pager: '#jqGridPager',
prmNames: {
nd: null,
search: null,
page: 'page',
rows: 'pageSize',
sort: 'sortKey',
order: 'sortOrder',
totalrows: 'totalQty'
},
jsonReader: {
root: 'data.entries',
// page: 'data.pager.page',
total: 'data.pager.totalPages',
records: 'data.pager.totalQty'
}
});
});
})(jQuery);
当jqGrid遇到长文本字段(第四个网格以渲染高度很高的行)时,启用scroll: 1
jqGrid变得出现故障并且无法正常工作。附上screencast以显示问题。
答案 0 :(得分:3)
我在之前的回答中写道,虚拟滚动的当前实现有很多限制。我写道,如果确实需要,我建议不要使用jqGrid的功能。
您在问题中描述的限制非常明确。您可以检查jqGrid代码的the lines,以查看jqGrid获取第一行的outerHeight
(请参阅the line)并将其乘以行数(请参阅the line和the line)。然后使用结果计算滚动后应设置的新页面数。
因此,如果一个人对不同的行有不同的高度,那么就不能使用jqGrid的虚拟滚动功能。
当前虚拟滚动的实现还存在很多其他问题。最重要的是限制可以在Internet Explorer中显示的行数。如果您只是在Internet Explorer 中打开the page,您将只看到第一页数据,您将无法看到更多数据,您将看不到显示数据的建议并非全部数据库中存在20行。我发现问题与您描述的问题有很大关系。因此,在大量行的情况下,通常会尝试使用scroll: 1
选项,但完全不是这样。有关其他信息,请参阅the answer。
如果你仔细检查jqGrid的文档,你会发现很多地方(比如here)jqGrid的某些功能或某些方法不能用于虚拟滚动。因此,如果您使用scroll: 1
作为默认功能,那么您将无法使用jqGrid的许多功能。