当前位置: 首页 > 知识库问答 >
问题:

GXT网格分页列表存储

柳景胜
2023-03-14

我使用的网格使用分页,因此它使用ListLoader/MemoryProxy来管理页面。但在这种情况下,商店在任何给定时间都只知道当前页面中的项目。我还使用了支持排序的GroupingView(remoteSort=false)。但它只根据商店中的内容进行排序,即当前页面。但是,如果一个组扩展到第二个页面,排序将不考虑另一个页面上的组条目,因此在这种情况下排序是不正确的。有人对如何解决这个问题有什么解决方案或想法吗?

共有1个答案

董高逸
2023-03-14

问题是试图将你的“页面”概念映射到“组”-如果你在大小一致的页面中浏览结果,很可能这与你的组不匹配。例如,只要每个组只有几个项目,您可能会接近预期的页面大小(加或减几个项目),但您必须在分页时考虑到这一点。但是,当一个组(或一行中的几个组)的大小等于或大于一页时,会发生什么?

例如,假设您将页面大小设置为25个项目,3个组正在进行中,A有15个项目,B有20个项目,C有50个项目。如果第一页有25项,则

  1. 有15个A项,没有B项(这样组就不会被拆分,页面也不会太大)
  2. 有15个A项和10个B项(这样页面大小合适)
  3. 有15个A项和20个B项(这样组就不会被拆分,页面至少有25个项,但比预期的要大)

好吧,这有点烦人。当我们考虑第二页的项目时,情况确实变得更糟:

  1. 页面必须从第16项开始,而不是第26项,并且只有20 B项(如果您希望看到足够多的项以及如何在大尺寸网格中留有空白,仍然令人沮丧)。
  2. 页面从第16项开始,有20 B项,然后是5项C项(没有你描述的情况那么糟糕,因为B是完整的,但是C不是-如果你希望看到小组在一起,仍然令人沮丧)。
  3. 页面从第36项开始,包含所有50个C项(可能会在一组中最多100或1000个项时停止浏览器)。

幸运的是,所有这一切都很容易实现:服务器在paging results对象中告诉客户端它返回了什么,以及它发送的实际偏移量和项目(可能是也可能不是客户端请求的)。

在分页时将远程排序设置为false没有任何意义,因为服务器必须排序(或分组,这是一种排序)才能以一致的方式获得组。也就是说,如果您的查询仍然执行此操作,则分组视图必须确保项目已正确分组。与分页详细信息一样,它们是否被排序实际上对客户端并不重要(可能对用户很重要…)只要组中的项目彼此相邻(因为视图不会再次对项目重新排序)。

 类似资料:
  • 我有一个网格,允许用户更新列(即ModelData中的属性)。有没有办法让我看到未修改的记录(即ModelData)? 当用户单击“提交”按钮时:我可以使用List modifiedRecords=listStore。getModifiedRecords();用于修改的记录。我可以使用Map changedFieldsMap=modifiedRecord。getChanges();要查看已更改的列

  • 如何将网格组的总值与组的类型放在同一行中? 比如:[-]水果4.00美元 香蕉2美元 苹果2.00美元 所以当我的团队崩溃时,我有这个 []水果4.00美元

  • 如何制作此网格: 它不起作用,我明白了: 我发现了这个:点击 但GXT 3。*没有FitLayout 有什么想法吗?

  • 我使用的是GXT 3.0.0b。 我在ContentPanel上有一个网格。当我明确设置ContentPanel宽度时,滚动没有问题。但是当我把网格放在VerticalLayoutContainer中时,网格的垂直滚动条消失了,只能用鼠标滚轮滚动。 有人知道如何解决这个问题吗?

  • 当网格单元中的复选框更改其状态时,我需要更新存储:从存储中添加或删除值。如何处理此事件?顺便说一句,我用以下方式在网格中创建复选框: UPD2:现在我执行以下操作:按照最初的决定创建复选框: 而不是像这样处理网格中的事件:UPD3: 这是正确的方法。

  • 我正在做一个3年前的GXT项目。我有一个可编辑的网格,我想在编辑同一行的一个单元格,比如单元格A,另一个单元格,比如单元格B时更新它的值。事实上,单元格B必须代表基于单元格A字段值的一些计算。这是我用来捕获单元格A字段更改的代码: 这是我计算和更新单元格B值所做的事情: 当我用新的bean更新存储时,网格的行编辑器中没有显示单元格B的值,为了显示单元格B的值,我必须调用网格。getView()。刷