jQuery EasyUI Data Grid -Отображение огромных объемов данных с использованием Virtual Scroll View
Функция виртуальной прокрутки datagrid может использоваться для отображения большого количества записей без необходимости в постраничной навигации. Когда вертикальная полоса прокрутки прокручивается, datagrid выполняет ajax-запросы для загрузки и обновления существующих записей. Весь процесс обновления происходит плавно и без мерцания. В этом руководстве мы создадим datagrid и используем функцию виртуальной прокрутки для загрузки данных с сервера.
Создание таблицы данных (DataGrid)
Чтобы применить функцию виртуальной прокрутки к datagrid, атрибуту 'view' следует присвоить значение 'scrollview'. Пользователям следует скачать scrollview из расширения datagrid и подключить файл scrollview в head страницы.
<script type="text/javascript" src="../try/jeasyui/datagrid-detailview.js"></script>
<table id="tt" class="easyui-datagrid" style="width:700px;height:300px" title="DataGrid - VirtualScrollView" data-options="view:scrollview,rownumbers:true,singleSelect:true, url:'datagrid27_getdata.php',autoRowHeight:false,pageSize:50"> <thead> <tr> <th field="inv" width="80">Inv No</th> <th field="date" width="100">Date</th> <th field="name" width="80">Name</th> <th field="amount" width="80" align="right">Amount</th> <th field="price" width="80" align="right">Price</th> <th field="cost" width="100" align="right">Cost</th> <th field="note" width="110">Note</th> </tr> </thead> </table>
Обратите внимание, что здесь нам не нужно использовать атрибут pagination, но атрибут pageSize обязателен, чтобы при выполнении ajax-запросов datagrid получал указанное количество записей с сервера.
Код на стороне сервера
datagrid27_getdata.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);
Скачать примеры jQuery EasyUI
jeasyui-datagrid-datagrid27.zip
Другие расширения