Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 跟踪表中数据的数据偏移量,以检索表滚动上的上一个子集/下一个子集_Java_Sqlite_Gwt - Fatal编程技术网

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

Java 跟踪表中数据的数据偏移量,以检索表滚动上的上一个子集/下一个子集,java,sqlite,gwt,Java,Sqlite,Gwt,我正在使用GWT编写一个基于浏览器的应用程序,并使用websql(是的,我知道它已被弃用)。我已经创建了一个自定义表格小部件(基于FlexTable),并通过一些CSS技巧使其能够滚动。我正在努力实现的(没有太大成功)是,当用户滚动到表中当前数据的开始/结束时,将触发一个事件,并从websql DB返回X行的下一个子集,并替换表中当前的数据。为了使其正常工作,我需要跟踪table小部件中的数据偏移量,以便将其传递给查询,并使用SQL的limit和offset函数返回所需的数据。然而,我似乎无法在

我正在使用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的组合来确定需要采取的操作。无论我尝试过哪种变化,都是处理零边界的逻辑导致了我的问题。