是否可以将数据延迟加载到 GWT DataGrid 中,类似于 GWT CellList 延迟加载数据的方式?
我有一个 GWT DataGrid,它可能会带回数百行,但一次只显示大约 20 行。发生这种情况时,网格的加载速度相当慢。
我想使用 DataGrid 而不是 CellTList,因为我有多列数据需要显示。我选择了 DataGrid 而不是 CellTable,因为我希望修复标题列。
Since DataGrid
不暴露它的ScrollPanel
,创建一个扩展的内部类DataGrid
并提供参考ScrollPanel
:
private static class MyDataGrid<T> extends DataGrid {
public ScrollPanel getScrollPanel() {
HeaderPanel header = (HeaderPanel) getWidget();
return (ScrollPanel) header.getContentWidget();
}
}
初始化其工作所需的变量:
private MyDataGrid<MyDataType> myDataGrid;
private int incrementSize = 20;
private int lastScrollPos = 0;
在构造函数中,创建网格:
myDataGrid = new MyDataGrid<MyDataType>();
然后使用刚刚创建的 getScrollPanel() 引用添加 ScrollHandler:
myDataGrid.getScrollPanel().addScrollHandler(new ScrollHandler(){
@Override
public void onScroll(ScrollEvent event) {
int oldScrollPos = lastScrollPos;
lastScrollPos = myDataGrid.getScrollPanel().getVerticalScrollPosition();
// If scrolling up, ignore the event.
if (oldScrollPos >= lastScrollPos) {
return;
}
//Height of grid contents (including outside the viewable area) - height of the scroll panel
int maxScrollTop = myDataGrid.getScrollPanel().getWidget().getOffsetHeight() -
myDataGrid.getScrollPanel().getOffsetHeight();
if(lastScrollPos >= maxScrollTop) {
myDataGrid.setVisibleRange(0,myDataGrid.getVisibleRange().getLength()+incrementSize);
}
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)