gpt4 book ai didi

gwt - 在 GWT DataGrid 中延迟加载数据

转载 作者:行者123 更新时间:2023-12-01 09:33:47 24 4
gpt4 key购买 nike

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

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

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

最佳答案

由于 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);
}
}
});

关于gwt - 在 GWT DataGrid 中延迟加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11997130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com