Java 跟踪表中数据的数据偏移量,以检索表滚动上的上一个子集/下一个子集
我正在使用GWT编写一个基于浏览器的应用程序,并使用websql(是的,我知道它已被弃用)。我已经创建了一个自定义表格小部件(基于FlexTable),并通过一些CSS技巧使其能够滚动。我正在努力实现的(没有太大成功)是,当用户滚动到表中当前数据的开始/结束时,将触发一个事件,并从websql DB返回X行的下一个子集,并替换表中当前的数据。为了使其正常工作,我需要跟踪table小部件中的数据偏移量,以便将其传递给查询,并使用SQL的limit和offset函数返回所需的数据。然而,我似乎无法在小部件中实现数据偏移跟踪器。另一个复杂的问题是,我需要表能够滚动到“过去”(可以这么说),以便它能够在加载表时从初始起点之前检索数据 我已经在这方面做了好几天了,只是似乎不能把它做好。所以我想知道/希望有人能给我指出正确的方向(请!) 提前谢谢Java 跟踪表中数据的数据偏移量,以检索表滚动上的上一个子集/下一个子集,java,sqlite,gwt,Java,Sqlite,Gwt,我正在使用GWT编写一个基于浏览器的应用程序,并使用websql(是的,我知道它已被弃用)。我已经创建了一个自定义表格小部件(基于FlexTable),并通过一些CSS技巧使其能够滚动。我正在努力实现的(没有太大成功)是,当用户滚动到表中当前数据的开始/结束时,将触发一个事件,并从websql DB返回X行的下一个子集,并替换表中当前的数据。为了使其正常工作,我需要跟踪table小部件中的数据偏移量,以便将其传递给查询,并使用SQL的limit和offset函数返回所需的数据。然而,我似乎无法在
蒂姆我不确定这为什么会引起问题
int page = 0;
// when you hit the bottom
page++;
loadData(page);
// when you hit the top
if (page > 0) {
page--;
loadData(page);
}
Tim我认为用CSS技巧控制卷轴不是一个好主意 我很快就做了类似的事情,并控制了所有的逻辑(分页、滚动位置等) 我建议使用的是gwt的scrollPanel,它是一个
HasData
小部件(如cellList),用于定制AbstractCell
(为列表的每一行呈现的类)和asyncDataProvider
(它提供了onRangeChange
处理程序,用于在范围数据显示发生更改时向服务器发出请求)
当在scrollPanel.addScrollHandler中检测到您即将到达终点时,可以强制/触发该事件
如果您想看到所有这些都在起作用,请查看(单击源代码):
编辑[根据下面的评论]:
A.如果要用新检索的数据覆盖数据(示例中为X+X+X…),只需始终保持显示的数据范围相同[display.setVisibleRange(0,newPageSize);
],并在呈现新数据时从0开始(在RangeChange
侦听器上)
B.如果您需要控制上下滚动,而不是利用cellList内部使用的事件(基本上是onRangeChange
),您可以创建自定义事件并触发它们(此选项可以让您的同事更容易理解所有事情)。不要担心控制上下滚动,在ShowMorePagerPanel.java
中,您可以看到了解上下控件的简单示例
无论如何,我没有解释得更详细,因为我看不出你对使用CellList
方法很有信心(我当时使用的是我的平板电脑:D)
如果你改变主意,请告诉我,我会一步一步地为你写一个合适的例子(这部分可能很棘手,因此如果你迷路了,这是正常的;)。感谢你花时间回复。我理解你的意思,谢谢你给我这个例子的链接。但是,我的情况略有不同,当检索下一组数据时,表中的当前数据集将被新数据集替换。因此,我在表中只有X行,而不是X+X+X。。。因此,这使得跟踪数据更加复杂,因为我需要考虑卷轴和向下滚动。@ NKN好像我已经尝试过一切!好的,我可以捕捉上下滚动,这一点非常直接。我尝试过的不同的逻辑变体似乎都有效,除了10%的情况,这是非常令人沮丧的。目前,我正在使用currentScrollDirection、previousScrollDirection和dataCursor的组合来确定需要采取的操作。无论我尝试过哪种变化,都是处理零边界的逻辑导致了我的问题。