【问题标题】:Handling large amount of data in GWT ListBox处理 GWT ListBox 中的大量数据
【发布时间】:2013-03-18 18:46:36
【问题描述】:

当我的 Presenter 被发现时,我必须进行 RPC 调用。该调用导致 String[] 包含大量数据。但是这个调用非常非常慢。大约需要 1 分钟才能完成。

经过一些测试,我发现 ListBox.addItem() 占了这个调用的 30% 以上。只需在该 Widget 上添加 String 即可。

我能做些什么来减少这个时间?

假设当我的 Presenter 显示时我需要加载所有内容。

我已经做过的事情:

  • 将我的查询放在视图中(影响不大)
  • 服务器读取一个 Txt 文件而不是调用 DB(比 View 最差)。
  • 使用 Collections 类 ArrayList、Vector...(向量时间减少 5%)

我注意到 GWT 设计了一个 LightweightCollections 来改进客户端对集合的使用(这是我的下一步)。

但是我可以对 ListBox 做些什么呢?

【问题讨论】:

  • 当用户一次只能看到 200 个项目时,为什么还要尝试一次显示这么多数据?
  • 你能发布你的代码吗?

标签: gwt listbox gwt-platform


【解决方案1】:

选择太多是没有选择的。

您将无法调整 GWT Listbox/ValueListBox 以显示如此大量的数据(我猜测 1000 中的条目考虑 20 秒,即 1 分钟的 30%)。 GWT Listbox 用于选择。您不能期望用户看到 1000 的值,滚动然后选择。这是用户交互的噩梦

  1. 正确的方法是对如此庞大的数据使用异步加载的 SuggestBox。使用 SuggestBox,您可以根据用户输入键过滤和显示较少的数据作为选择。

  2. 如果使用 SuggestBox 不可行,您必须尝试在 Cell Widgets 中使用 CellList(它们可能会显示出更好的性能)-https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets

  3. 我不确定,但可以试试 GWTchosen - http://jdramaix.github.com/gwtchosen/

【讨论】:

  • 我同意你的观点,但是,这是用户规范。
  • 尝试并教育用户提供“功能性”替代 :)
  • 我会试试 GWTchosen,看起来不错,谢谢你的提示。另外,使用番石榴库 ImmutableList。
  • 如果您想执行上述解决方案 1. 使用 SuggestBox,如果您希望它也像 ListBox 一样具有滚动条,您可以对其进行简单扩展,根据其他问题/答案:@ 987654323@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2013-01-10
  • 2011-01-10
  • 2017-09-26
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多