GWT DataGrid 中的延迟加载数据

2024-04-07

是否可以将数据延迟加载到 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(使用前将#替换为@)

GWT DataGrid 中的延迟加载数据 的相关文章

随机推荐

  • HTML5 中卡片/卡片容器的元素?

    规格为article元素说 The article元素表示页面的组成部分 文档 页面 应用程序或站点中的独立组成部分 并且旨在可独立分发或可重复使用 例如在联合组织中 这可以是论坛帖子 杂志或 报纸文章 博客条目 用户提交的评论 交互式小部
  • 无法在 Chrome 中从 webworker 内部创建 Web Worker

    使用 Chrome 17 0 963 46 m 我尝试从 Web Worker 内部创建一个新的 Web Worker 但得到了 Uncaught ReferenceError Worker 未定义 任何信息 关于这个 令人惊讶的是 谷歌在
  • Laravel Livewire:输入选择,选择默认选项

    我正在尝试从数据库中获取国家 地区代码 并尝试通过 IP 地址获取默认值 它按照我想要的方式工作了一秒钟 但随后我不知道会发生什么 但它会自行刷新并滚动到第一个选项而不是选定的选项 Livewire 控制器组件 use App Models
  • 为什么在 VCL 控件上调用 TRttiContext.GetType 时某些属性会重复?

    为什么有些属性会重复 例如Action and Align 而其他人则没有 AlignWithMargins 当在 VCL 控件上调用 TRttiContext GetType 时 uses System RTTI System Gener
  • 有没有可以渲染 numpy 数组数据的 pythonplotly/dash 图像小部件?

    我正在评估 pythonplotly 和 或 dash 作为更新图像的链接图的 bokeh holoviews 的替代品 要求 将数据点链接到图像 我有散点图和热图 其中各个数据点代表从图像派生的值 我想从散点图中的数据点链接回该数据点的数
  • QT 甚至在 waitForConnected 运行时进行处理

    我有一个循环 应该尝试连接到范围内的每个 IP for socket gt connectToHost addres port do stuff if socket gt waitForConnected 2000 do stuff if
  • 将图像添加到 gridpane javafx

    我正在使用数组列表添加目录中的图像列表 添加图像时 我的 ScrollPane 变得拥挤 如何保持图像之间的间距 这是我的代码 File file new File D SERVER Server Content Apps icons Fi
  • Gmail API 在发送电子邮件时覆盖自定义 Message-ID 标头

    我们使用 Gmail API 代表我们应用程序的用户发送电子邮件 在我们通过 Gmail API 发送的电子邮件的标头中 我们设置了自定义消息 ID 尽管如此 Gmail 仍会用不同的邮件 ID 覆盖我们设置的邮件 ID 以下是我们尝试过的
  • 无状态与有状态

    我对包含有关编程中无状态和有状态设计的一些具体信息的文章感兴趣 我很感兴趣 因为我想了解更多有关它的信息 但我真的找不到任何关于它的好文章 我在网上读过几十篇文章 这些文章模糊地讨论了这个主题 或者他们正在谈论 Web 服务器和会话 这也是
  • jquery淡出当前div,找到下一个div并淡入或找到最后一个并淡入

    我有一个名为 stage 的 div 类 它是问卷的一个阶段 div class stage div class next Next div div div class stage div class back Back div div c
  • 如何在目标c中获得该月的第n个星期日日期?

    如何在 Objective C 编码中获取第一个星期日或第 n 个星期日或星期一 任意一天 日期 例如 我只想每年在我的应用程序中显示友谊日的日期 但是 友谊是在八月的第一个星期日 所以 日期每年都会改变 在这里我需要找到每年八月的第一个星
  • 使用 .Net 3.5 程序集 SQL 2005 CLR?

    我有一个 CLR 存储过程 它引用在 VS 2008 中创建的使用 Linq 的程序集 我们将此程序集称为 MyLib 我似乎无法将 MyLib 放入我的 SQL 2005 数据库中 我执行以下操作 CREATE ASSEMBLY MyLi
  • 按创建日期对文件排序 - iOS

    我试图获取 i 目录中的所有文件并根据创建日期或修改日期对它们进行排序 那里有很多例子 但我无法让其中任何一个起作用 有人有一个很好的例子如何从按日期排序的目录中获取文件数组吗 这里有两个步骤 获取文件列表及其创建日期 并对它们进行排序 为
  • 使用 youtube API 获取频道的所有视频

    我想获取具有 ID 的单个频道的所有视频 我只获得频道信息的问题 这是我正在使用的链接 该链接适用于现已停用的 V2 API 因此它不会返回任何数据 相反 您需要使用 API 的 V3 您需要做的第一件事是注册 API 密钥 您可以通过在以
  • 在 OS X El Capitan 上将项目迁移到 Xcode 7.2 会破坏构建

    我之前使用 Xcode 7 1 运行 OS X Mavericks 我刚刚更新到 OS X El Capitan 和 Xcode 7 2 我的应用程序在模拟器和设备上正常启动 没有任何类型的故事板警告 现在 我看到一堆关于故事板中缺少约束的
  • 更改 RMarkdown 代码输出中错误消息的颜色(HTML、PDF)

    有没有办法在 R Markdown 中自动将错误的文本颜色设置为红色 而无需稍后手动编辑 HTML title Example 1 r e1 error TRUE 2 A Example 2 r e2 error TRUE 2 2 在上面的
  • 有没有办法更改 Visual Studio Code 的扩展文件夹位置?

    我已经安装了 Visual Studio CodeOneDrive https en wikipedia org wiki OneDrive 以便将其与我的设备上的设置同步 但是 扩展名存储在 USERPROFILE vscode exte
  • 将复选框数组从 js 发送到 django 视图

    我对如何通过 Ajax 或 Json 执行此操作感到困惑 但是如何将选择数组 curCheck 单击发送到 Django 视图并将其作为 python 数组接收 javascript document getElementById resu
  • 如何专注于 jasmine.js 中的一项规范?

    由于相当大的架构变化 我有一堆失败的规格 我想通过用 焦点 标记每个问题来一一修复它们 jasmine js有这样的功能吗 我发誓我曾经读到过它确实如此 但我在文档中没有看到它 使用 Karma 时 您只能启用一项测试fit or fdes
  • GWT DataGrid 中的延迟加载数据

    是否可以将数据延迟加载到 GWT DataGrid 中 类似于 GWT CellList 延迟加载数据的方式 我有一个 GWT DataGrid 它可能会带回数百行 但一次只显示大约 20 行 发生这种情况时 网格的加载速度相当慢 我想使用