我正在使用GWT编写基于浏览器的应用程序并使用websql(是的,我知道它已被弃用)。我已经创建了一个自定义表小部件(基于FlexTable)并使其能够在一些CSS技巧的帮助下滚动。我努力实现的目标(没有太大成功)是当用户滚动到表中当前数据的开头/结尾时,会触发一个事件,并从websql DB返回X行的下一个子集并替换目前在表中的数据。为了使其工作,我需要跟踪表小部件中的数据偏移量,以便我可以将其传递给查询并使用SQL的限制和偏移函数来返回所需的数据。但是,我似乎无法在小部件中获得实现数据偏移跟踪器的逻辑。另一个复杂因素是我需要表格能够滚动到“过去”(可以这么说),以便它可以在表加载时从初始起点之前检索数据。
我已经在这里待了好几天了,似乎无法做到这一点。所以我想知道/希望有人能够指出我正确的方向(请!)。
提前致谢
添
答案 0 :(得分:0)
我不确定为什么会导致问题。
int page = 0;
// when you hit the bottom
page++;
loadData(page);
// when you hit the top
if (page > 0) {
page--;
loadData(page);
}
答案 1 :(得分:0)
我很快做了类似的事情并控制了所有的逻辑(分页,滚动位置......)。
我建议使用的是gwt的scrollPanel,HasData
小部件(如cellList)您的自定义AbstractCell
(为列表的每一行呈现的类)和asyncDataProvider
(它为您提供onRangeChange
处理程序,以便在范围数据显示发生变化时询问您的服务器。
当你在scrollPanel.addScrollHandler检测到你到达目的地时,可以强制/触发该事件。
如果您想查看所有这些内容(请点击源代码):http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCellList
编辑[根据以下评论]:
一个。如果要覆盖数据(在示例中为X + X + X ...),则使用新检索的维护始终显示相同的数据范围[display.setVisibleRange(0, newPageSize);
],并在渲染时从0开始新数据(在RangeChange
听众身上)。
B中。如果您需要控制向上和向下滚动而不是在cellList内部利用已使用的事件(基本上是onRangeChange
),您可以创建自定义事件并触发它们(此选项可能对您的同事更容易了解一切)。并且不用担心控制向上和向下滚动,在ShowMorePagerPanel.java
内你可以看到一个知道上下控制的简单例子。
无论如何,我没有详细解释,因为我没有看到你非常确信使用CellList
方法(我使用的是我的平板电脑:D)。
如果你改变主意,请告诉我,我会一步一步为你写一个合适的例子(这部分可能很棘手,所以如果你迷路了,这是正常的;))。