GWT数据网格中的延迟加载数据

GWT数据网格中的延迟加载数据,gwt,Gwt,是否可以将数据延迟加载到GWT DataGrid中,类似于GWT CellList延迟加载数据的方式 我有一个GWT数据网格,它可能会带回数百行,但一次只显示大约20行。当这种情况发生时,网格的加载相当缓慢 我想使用DataGrid而不是CellTList,因为我需要显示多列数据。我选择了DataGrid而不是CellTable,因为我希望标题列是固定的。由于DataGrid没有公开它的ScrollPanel,因此创建一个扩展DataGrid的内部类,并提供对ScrollPanel的引用: 私有

是否可以将数据延迟加载到GWT DataGrid中,类似于GWT CellList延迟加载数据的方式

我有一个GWT数据网格,它可能会带回数百行,但一次只显示大约20行。当这种情况发生时,网格的加载相当缓慢


我想使用DataGrid而不是CellTList,因为我需要显示多列数据。我选择了DataGrid而不是CellTable,因为我希望标题列是固定的。

由于
DataGrid
没有公开它的
ScrollPanel
,因此创建一个扩展
DataGrid
的内部类,并提供对
ScrollPanel
的引用:

私有静态类MyDataGrid扩展了DataGrid{
公共ScrollPanel getScrollPanel(){
HeaderPanel头=(HeaderPanel)getWidget();
return(ScrollPanel)header.getContentWidget();
}
}
初始化此操作所需的变量:

私有MyDataGrid MyDataGrid;
私有int incrementSize=20;
private int lastScrollPos=0;
在构造函数中,创建网格:

myDataGrid=newmydatagrid();
然后使用刚刚创建的getScrollPanel()引用添加ScrollHandler:

myDataGrid.getScrollPanel().addScrollHandler(新的ScrollHandler()){
@凌驾
public void onScroll(滚动事件){
int oldScrollPos=lastScrollPos;
lastScrollPos=myDataGrid.getScrollPanel().getVerticalScrollPosition();
//如果向上滚动,则忽略该事件。
如果(oldScrollPos>=lastScrollPos){
返回;
}
//网格内容的高度(包括可视区域之外)-滚动面板的高度
int maxScrollTop=myDataGrid.getScrollPanel().getWidget().GetOffsetSight()
myDataGrid.getScrollPanel().GetOffsetView();
如果(lastScrollPos>=maxScrollTop){
myDataGrid.setVisibleRange(0,myDataGrid.getVisibleRange().getLength()+incrementSize);
}
}
});

CellList和DataGrid都是cellview窗口小部件,因此应用于“延迟加载”CellList的相同技术也适用于DataGrid。你试过了吗?我已经把它实现为一个CellTable,这个很有效。但是,当我使用DataGrid时,我相信显示的滚动条是DataGrid生成的滚动条,而不是ScrollPanel生成的滚动条。我想使用DataGrid,因为我希望在滚动时标题保持可见。谢谢,帮了我的忙。但是您可以删除实例myDataGrid值,它也可以工作,或者用这个值替换它。或MyDataGrid.this,在内部类中。