Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
GWT单元表列排序_Gwt_Sorting_Celltable - Fatal编程技术网

GWT单元表列排序

GWT单元表列排序,gwt,sorting,celltable,Gwt,Sorting,Celltable,我试图使用他们的ListDataProvider排序示例作为参考,对GWT中的一列进行排序 问题是,我可以看到我的表列数据正在被排序(通过使用调试器),但该表从未被刷新。查看上面链接中的示例,它们不会显式刷新显示。我是不是遗漏了什么 谢谢。这两个例子既没用又令人困惑 在说明如何使用单元格/网格表时,使用ListHandler和DataProvider也没有太大帮助 这些示例混淆并隐藏了GWT单元/网格表的一个简单特征——每次数据发生变化时,您只需替换列表并将其输入表中即可 这些示例使用List

我试图使用他们的ListDataProvider排序示例作为参考,对GWT中的一列进行排序

问题是,我可以看到我的表列数据正在被排序(通过使用调试器),但该表从未被刷新。查看上面链接中的示例,它们不会显式刷新显示。我是不是遗漏了什么


谢谢。

这两个例子既没用又令人困惑

在说明如何使用单元格/网格表时,使用ListHandler和DataProvider也没有太大帮助

这些示例混淆并隐藏了GWT单元/网格表的一个简单特征——每次数据发生变化时,您只需替换列表并将其输入表中即可

这些示例使用ListHandler、异步处理程序和数据提供程序,通过引入大量无用的抽象优雅,使一个相当简单的过程复杂化。从本质上说,这些抽象而可怕的结构本身将记录推送到表列表中。不要注意定时器的使用

你也可以拿着桌子上的牛角,自己动手做——这样做简单多了。我不记得我是怎么做的,因为我没有带代码

您需要做的是保留记录列表的缓冲区副本。这是要在表中显示的记录列表

无论您是在执行异步还是其他操作,您希望对数据进行的任何更改都将在该缓冲区副本上进行。您的GWT-RPC应该更新该缓冲区

当表请求升序排序时,比较器/过滤器将生成缓冲列表的升序副本,以使用setRowData替换表中的数据。类似地,当表请求降序或专门筛选时

如果您希望让DataProvider为您管理分页,那么使用DataProvider非常有用。自己处理GWT-RPC要简单得多。DataProvider应该通过请求服务器向其发送一个新列表来为您处理排序和筛选,该列表根据表的意愿进行排序/筛选。为什么您希望通过让服务器管理您的筛选/排序来消耗网络流量,除非您有超过10页的记录


因此,对于一个简单的50条记录的实验示例,请自己管理缓冲区列表。

我的经验表明,在创建列表时,排序处理程序(即ListHandler)对列表非常敏感,ListDataProvider具有该列表

因此,我建议不要删除或设置ListDataProvider的新列表(当然,我认为在创建ListDataProvider时,它至少应该有一个空(非空)列表)

只需使用
ListDataProvider.getList()
并在其上执行您的工作

例如,要删除所有当前行并设置新数据,只需调用
ListDataProvider.getList().clear()
,然后调用
ListDataProvider.getList().addAll(yourNewData)

不要调用
setList()
,否则排序将不起作用。

感谢您的回复我完全同意您的观点,插图没有多大帮助,所以。。。但是完全按照你所说的去做,并且真正做到了。再次感谢。有人对单元格/网格表不太熟悉,他否决了我。如果您的数据>≈10K元素(取决于元素),否则可能会降低接口速度。我有两种功能的datagrid表。Hamzeh,你是摇滚明星!你不知道我为这个问题寻找解决方案已经有多久了。使用getList().addAll()而不是setList()为我做到了这一点。