jEasyUI displays massive data


The virtual scrolling feature of the datagrid can be used to display large numbers of records without paging. When the vertical scroll bar is scrolled, the datagrid performs ajax requests to load and refresh existing records. The entire refresh process is smooth and has no flicker. In this tutorial, we will create a datagrid and load data from the server using virtual scrolling.

84.png

Create DataGrid

To use the virtual scrolling feature for the datagrid, the 'view' attribute should be set to 'scrollview'. Users should download scrollview from the datagrid extension and reference the scrollview file in the page header.

<script type="text/javascript" src="http://www.w3cschool.cc/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>

Please note that we do not need to use the pagination attribute here, but the pageSize attribute is required so that when performing an ajax request, the datagrid will obtain the specified number of records from the server.

Server-side code

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);

Download jQuery EasyUI instance

jeasyui-datagrid-datagrid27.zip