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