0

Liferay MVC ポートレットと一緒に EasyUIを使用しています。サーバー側のページネーションと DataGrid フィルターを同じ datagrid に適用しました。フィルターがないと、DataGrid のページネーションは正常に機能します。しかし、フィルターを適用すると、ページネーションの次のページにデータが表示されません。多くの努力の結果、DataGrid フィルター プラグインの JS ( datagrid-filter.js ) で、ページネーションのために次のコードが実行されていることがわかりました。

if (opts.pagination){
    var dg = $(this);
    var pager = dg[name]('getPager');
    pager.pagination({
        onSelectPage:function(pageNum, pageSize){
            opts.pageNumber = pageNum;
            opts.pageSize = pageSize;
            pager.pagination('refresh',{
                pageNumber:pageNum,
                pageSize:pageSize
            });

            //dg.datagrid('loadData', state.filterSource);
            dg[name]('loadData', state.filterSource);
        },
        onBeforeRefresh:function(){
            //dg('reload');
            dg[name]('reload');
            return false;
        }
    });
    if (name == 'datagrid'){
        var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
        var end = start + parseInt(opts.pageSize);
        data.rows = data.rows.slice(start, end);
    } else {
        var topRows = [];
        var childRows = [];
        $.map(data.rows, function(row){
            row._parentId ? childRows.push(row) : topRows.push(row);
        });
        data.total = topRows.length;
        var start = (opts.pageNumber-1)*parseInt(opts.pageSize);  
        var end = start + parseInt(opts.pageSize);  
        data.rows = $.extend(true,[],topRows.slice(start, end).concat(childRows));
    }
}

この行にコメントすると、次のようになります。

dg[name]('loadData', state.filterSource);

ページネーションは正しく機能しますが、フィルターは何も応答しません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

この問題を解決するには、次の手順に従う必要があります。

  1. であることを確認してくださいremoteFilter(falseデフォルトは false)。
  2. SQLクエリで制限オフセットを使用しないでください

理解

通常のページングでは、次または前をクリックすると、EasyUi は制限とオフセットを含むパラメーターをサーバーに送信し、ページごとに結果を制限します。filterを使用する場合、remoteFilterisfalseの場合、ページネーション テーブルはローカルで発生します。したがって、すべての結果を取得するために limit と offset を使用する必要はありません。

$('#table').datagrid({
      your code here....
  }).datagrid('enableFilter');
于 2014-10-17T02:27:11.187 に答える