java - SmartGWT ListGrid 大数据集问题

标签 java gwt smartgwt listgrid

我有一个 SmartGWT ListGrid,其中包含 16 个字段,每个字段都包含字符串。网格附加到通过 REST 提供的数据源。但是,当数据源中的数据量很大时,我遇到了问题。

处理非常小的数字时没有问题,即使处理 200,000 条记录也仍然没有问题。然而,当涉及到更大的数据集时,例如我之前尝试过的有 260 万条记录的数据集,网格仅显示前 850,000 条(近似值)记录,然后拒绝进一步分页。更奇怪的是,当我的数据源有大约 2000 万条记录时,网格仅显示前 20 条,然后根本拒绝分页。

Strangley 我可以使用 isc.showConsole(); 在我的 RPC 响应中看到返回的数据;并且可以看到它正在返回正确的数据,事实上,即使它返回 64 条有效记录,它也只显示前 20 条。totalRecords 正确返回为 2000 万,但它不会分页。

我的网格设置如下

ListGrid grid = new ListGrid();
DataSource ds = Application.getMyDataSource();
grid.setCriteria(new Criteria("someid", 627263));
grid.setDataSource(ds);

grid.setAutoFetchData(true);

我的数据源设置正确,因为它可以在较小的数据集上完美运行,每个字段都创建为 DataSourceTextField。

服务器端接受传入请求,查找传入的 someid,检查 _startRow、_endRow 参数以找到这些行(我没有为此使用数据库)并手动设置 startRow、endRow 和 totalRow 字段。

当我检查返回的数据时,数据是正确的,但网格拒绝正确显示它。

我错过了什么?列表网格是否有最大尺寸?据我所知,他们应该处理数百万条记录,但我的似乎完全失败了。

编辑

经过进一步检查,SmartGWT 处理滚动条大小的方式似乎有误。我现在不知道如何解决这个问题。

当滚动到应该有 230 万行的表格底部时,显示的最后一行是 894,785。这远远低于预期的行数。

此时从数据源返回的所有数据都是正确的。有趣的是,单击最后一行并使用键盘上的向下箭头滚动效果很好,这对我来说再次强调了这是滚动条问题的观点。

最佳答案

为了使渐进式加载起作用,必须以某种方式欺骗网格以指示有更多数据。

由于我们不想绘制 1000 条空记录(实际的总行数),而当只有 150 条数据被获取时,我们需要设置 totalRows = 160 或其他内容以生成足够接近的滚动拇指大小,并允许滚动到 150 条记录以下,以触发下一页的渐进加载。

检查:
Paging and total dataset length in ResultSet
http://forums.smartclient.com/showthread.php?t=516
http://forums.smartclient.com/showthread.php?t=2750

当您将滚动 slider 向底部拖得太快时,网格可能会“智能地”跳过加载中间行。

ListGrid.showAllRecords可能是您需要根据 http://forums.smartclient.com/showthread.php?t=23638 检查的内容.

最后一个线程还指出了浏览器和大型数据集的问题。

关于java - SmartGWT ListGrid 大数据集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17881829/

相关文章:

java - Selenium 中的下拉选择确实会更改选择,但不会更改 HTML 页面

java - Struts 2 下载文件为 0 字节

web-services - GWT 查询服务

javascript - 如何将 JavaScriptObject 结果添加到 SmartGWT 中生成的 HTML 的特定位置?

java - 无法在 Python 3.5 中从 PyQt5 导入 QWebPage

java - org.eclipse.core.runtime.Assert 在哪里可用?

css - GWT UiBinder 样式主名称不起作用

javascript - GWT JSNI - Java 到 Javascript 返回 Java 导致未定义的参数

java - 我在 GWT 编译器中编译源代码时遇到错误 ."No source code is available for type com.reveregroup.gwt.imagepreloader.FitImage"

maven - 带有 Maven 的 SmartGWT 3.0