jQuery EasyUI DataGrid 虚拟滚动视图实现海量数据平滑加载

iPython
iPython
发布时间:2026-10-15| 2人浏览过
原创

本文详细介绍如何在 jQuery EasyUI 中利用 DataGrid 的虚拟滚动视图(scrollview)实现海量数据的平滑加载。通过配置 view 属性和 pageSize,结合后端 PHP 接口按需返回数据,无需传统分页即可高效展示数万条记录,解决大数据量下的性能瓶颈问题。

虚拟滚动视图效果预览

使用虚拟滚动视图(Virtual Scroll View)的核心优势在于,当用户快速拖动垂直滚动条时,DataGrid 会执行 AJAX 请求动态加载和刷新当前可视区域的记录。整个过程平稳且无闪烁,无需使用传统的分页控件即可处理成千上万条数据。

jQuery EasyUI DataGrid 虚拟滚动视图界面,展示包含发票号、日期、名称、金额等字段的表格,滚动条平滑移动
图1:应用虚拟滚动视图后的 DataGrid 界面,展示包含发票号、日期、名称、金额等字段的表格,滚动条平滑移动

前置准备与依赖配置

要实现虚拟滚动,必须引入 EasyUI 提供的特定视图文件。请在页面头部引用 datagrid-detailview.js(或官方提供的 scrollview 相关文件),并确保已正确加载 jQuery 和 EasyUI 核心库。

第1步:引入虚拟滚动视图脚本

在 HTML 的 部分添加以下脚本引用,确保 DataGrid 能够识别 scrollview 视图类型。

<script type="text/javascript" src="https://www.runoob.com/try/jeasyui/datagrid-detailview.js"></script>

前端 DataGrid 配置详解

前端配置的关键在于将 view 属性设置为 'scrollview',并明确指定 pageSize。注意,此时不需要使用 pagination 属性,因为虚拟滚动会自动处理数据分页加载。

第2步:创建 DataGrid 表格结构

使用

标签定义表格,并通过 data-options 配置关键参数。以下是完整的 HTML 结构示例:
Inv No Date Name Amount Price Cost Note

第3步:关键参数说明

  • view: 'scrollview':启用虚拟滚动视图,这是实现大数据量平滑滚动的核心。
  • pageSize: 50:每次 AJAX 请求从服务器获取的记录数量。该参数在虚拟滚动中是必需的,用于控制单次加载的数据块大小。
  • autoRowHeight: false:关闭自动行高计算,提升渲染性能。
  • url:指定后端数据接口地址。

后端数据处理逻辑

后端 PHP 脚本 datagrid27_getdata.php 负责接收前端请求,生成模拟数据,并以 JSON 格式返回。以下是完整的后端代码及逻辑解析。

第4步:编写后端 PHP 接口

$page = isset($_POST['page']) ? intval($_POST['page']) : 1;
$rows = isset($_POST['rows']) ? intval($_POST['rows']) : 50;
$items = array();
date_default_timezone_set('UTC');
for($i=1; $i<=$rows; $i++){
    $index = $i+($page-1)*$rows;
    $amount = rand(50,100);
    $price = rand(10000,20000)/100;
    $items[] = array(
        'inv' => sprintf("INV%04d",$index),
        'date' => date('Y-m-d',time()+24*3600*$i),
        'name' => 'Name' . $index,
        'note' => 'Note' . $index,
        'amount' => $amount,
        'price' => sprintf('%01.2f',$price),
        'cost' => sprintf('%01.2f',$amount*$price)
    );
}
$result = array();
$result['total'] = 8000;
$result['rows'] = $items;
echo json_encode($result);

第5步:后端逻辑解析

后端代码主要完成以下任务:

  1. 接收参数:从 POST 请求中获取 page(当前页码)和 rows(每页条数)。
  2. 生成数据:根据页码和行数计算索引,生成模拟的发票号、日期、名称、金额、价格和成本数据。
  3. 返回结果:构造包含 total(总记录数,此处固定为 8000)和 rows(当前页数据数组)的 JSON 对象。

常见问题与调整建议

问题1:滚动时数据加载卡顿或闪烁

原因:未正确引入 datagrid-detailview.js 或 view 属性未设置为 'scrollview'。
解决:检查脚本引用路径,并确保 data-options 中包含 view:scrollview。

问题2:数据加载不完整或显示异常

原因:后端返回的 JSON 格式不符合 EasyUI 要求,或 pageSize 设置过大导致单次请求数据量过多。
解决:确保后端返回的 JSON 包含 total 和 rows 字段,并适当调整 pageSize 值(建议 20-100 之间)。

问题3:表格高度固定导致内容溢出

原因:未设置 autoRowHeight: false 或表格容器高度未固定。
解决:在 data-options 中设置 autoRowHeight: false,并为表格指定固定高度(如 height:300px)。

总结

通过配置 view: 'scrollview' 和 pageSize,jQuery EasyUI DataGrid 能够高效处理海量数据。前端负责视图渲染与滚动监听,后端负责按需返回数据块,两者配合实现无分页的平滑大数据展示。此方案适用于需要展示数万条记录且对用户体验要求较高的场景。

以上就是 jQuery EasyUI DataGrid 虚拟滚动视图实现海量数据平滑加载的详细内容,更多关于 jQuery EasyUI DataGrid 的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。