【问题标题】:SmartGWT ListGrid large dataset problemsSmartGWT ListGrid 大型数据集问题
【发布时间】:2013-07-30 22:33:12
【问题描述】:

我有一个 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。这远远低于预期的行数。

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

【问题讨论】:

  • 听起来像是某种溢出/内存问题。您是否收到任何警告/错误?
  • 我忘了说,没有错误,没有溢出,没有什么异常。通过 REST 传输的数据只是分页时数百万条记录的一个子集。一般来说,它只返回大约 60 条记录,这是我所期望的。问题是 ListGrid 没有正确处理它。
  • 要检查的几件事:totalRows 的值(必须大于 endRow - +10 - 触发正确的滚动拇指大小),从服务器获取和返回的记录数,接收到客户端的记录数, 每个页面请求的开始和结束期间的开始/结束/总行值
  • @Sithsu 为什么 totalRows 需要大于 endRow?获取的记录数始终与请求的数量相匹配。然而,获取并返回给客户端的行并不总是与 ListGrid 中实际出现的数字相匹配。

标签: java gwt smartgwt listgrid


【解决方案1】:

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

由于我们不想在仅获取 150 条数据时绘制 1000 条空记录(实际的 totalRows),因此我们需要设置 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

当您将滚动拇指拖到底部的速度过快时,网格可能会“智能”跳过加载中间行。

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

最后一个线程也表明浏览器和大型数据集存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多