jqGrid滚动bug与大行
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变得出现故障并且不起作用。 附上截屏video以显示问题。
我在之前的回答中写道,虚拟滚动的当前实现有很多限制 。 我写道,如果确实需要 ,我不建议使用jqGrid的function。
您在问题中描述的限制非常明确。 您可以检查jqGrid代码的行 ,以查看jqGrid获取第一行的outerHeight
(请参阅该行 )并将其乘以行数(请参阅行和行 )。 然后使用结果计算滚动后应设置的新页面数。
因此,如果对于不同的行具有不同的高度,则绝对不能使用jqGrid的虚拟滚动function。
当前虚拟滚动的实现中存在许多其他问题。 最重要的是限制可以在Internet Explorer中显示的行数。 如果您只是在Internet Explorer中打开页面 , 您将只看到第一页数据,您将无法看到更多数据,您将看不到显示数据的建议并非数据库中存在的所有20行。 我发现问题与你描述的问题有很多关系。 因此,一旦尝试使用scroll: 1
选项,通常在大量行的情况下使用,但正好在它不起作用的情况下。 有关其他信息,请参阅答案 。
如果你仔细检查jqGrid的文档,你会发现许多地方(比如这里 )jqGrid的某些function或某些方法不适用于虚拟滚动。 因此,如果您使用scroll: 1
作为默认function,那么您将无法使用jqGrid的许多function。