jQuery EasyUI データグリッド -仮想スクロールビューを使用して大量データを表示する

データグリッド(datagrid)の仮想スクロール機能を使用すると、ページングなしで大量のレコードを表示できます。 垂直スクロールバーをスクロールすると、データグリッド(datagrid)はajaxリクエストを実行して既存のレコードをロードおよび更新します。 更新動作のプロセス全体がスムーズで、ちらつきはありません。 このチュートリアルでは、データグリッド(datagrid)を作成し、仮想スクロール機能を使用してサーバーからデータをロードします。

データグリッド(DataGrid)の作成

データグリッド(datagrid)に仮想スクロール機能を適用するには、'view' プロパティを 'scrollview' に設定する必要があります。 ユーザーはデータグリッド(datagrid)拡張機能からscrollviewをダウンロードし、ページのヘッダーでscrollviewファイルを参照する必要があります。

<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

その他の拡張機能