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