跟踪表中数据的数据偏移量以检索表滚动上的上一个/下一个子集

时间:2014-04-25 22:08:07

标签: java sqlite gwt

我正在使用GWT编写基于浏览器的应用程序并使用websql(是的,我知道它已被弃用)。我已经创建了一个自定义表小部件(基于FlexTable)并使其能够在一些CSS技巧的帮助下滚动。我努力实现的目标(没有太大成功)是当用户滚动到表中当前数据的开头/结尾时,会触发一个事件,并从websql DB返回X行的下一个子集并替换目前在表中的数据。为了使其工作,我需要跟踪表小部件中的数据偏移量,以便我可以将其传递给查询并使用SQL的限制和偏移函数来返回所需的数据。但是,我似乎无法在小部件中获得实现数据偏移跟踪器的逻辑。另一个复杂因素是我需要表格能够滚动到“过去”(可以这么说),以便它可以在表加载时从初始起点之前检索数据。

我已经在这里待了好几天了,似乎无法做到这一点。所以我想知道/希望有人能够指出我正确的方向(请!)。

提前致谢

2 个答案:

答案 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)

蒂姆我觉得用CSS技巧控制滚动并不是一个好主意。

我很快做了类似的事情并控制了所有的逻辑(分页,滚动位置......)。

我建议使用的是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)。

如果你改变主意,请告诉我,我会一步一步为你写一个合适的例子(这部分可能很棘手,所以如果你迷路了,这是正常的;))。