我有一个 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。这远远低于预期的行数。
此时从数据源返回的所有数据都是正确的。有趣的是,单击最后一行并使用键盘上的向下箭头滚动效果很好,这对我来说再次强调了它是滚动条问题的观点。