Sapui5 分组聚合后列表控件中断

Sapui5 分组聚合后列表控件中断,sapui5,Sapui5,我对sap.m.列表有两个问题。我试图按给定日期对值进行分组 分组显示重复的组头,尽管具有相同的值。 实际的列表项根本不显示。 我正在绑定控制器中的所有内容。当我卸下分拣机时,列表会正确运行并正确显示所有数据。但一旦我添加了分组,列表就中断了 XML视图项目更复杂,为简单起见,已删除所有其他变量: 控制器: this.byIdidListCart.bindItems{ 路径:/CartSet, 模板:this.byIdlistItemTemplate, 过滤器:过滤器, 分拣机:sap/ui/m

我对sap.m.列表有两个问题。我试图按给定日期对值进行分组

分组显示重复的组头,尽管具有相同的值。 实际的列表项根本不显示。 我正在绑定控制器中的所有内容。当我卸下分拣机时,列表会正确运行并正确显示所有数据。但一旦我添加了分组,列表就中断了

XML视图项目更复杂,为简单起见,已删除所有其他变量:

控制器:

this.byIdidListCart.bindItems{ 路径:/CartSet, 模板:this.byIdlistItemTemplate, 过滤器:过滤器, 分拣机:sap/ui/model/sorter需要新的分拣机{// 路径:Startdatum, 组:functionoContext{ 返回/*格式日期*/; } }, groupHeaderFactory:函数组{ 从sap/m/GroupHeaderListItem返回新的GroupHeaderListItem{//required 标题:oGroup.key }; }, };
知道我做错了什么吗?

一般来说,在没有在父控件中预定义相应的列表绑定的情况下用XML声明模板不是一个好的做法。否则,它只是添加一个简单的条目,UI5最初会将其与列表一起呈现。然后在控制器的列表绑定完成后的第二个呈现周期中克隆和替换该单个项。我想这就是分组的问题所在;第一个项目不再是sap.m.CustomListItem,而是sap.m.GroupHeaderListItem,在渲染其余项目时会产生副作用

最好在控制器中完全创建模板:

{//项目绑定信息 路径:/CartSet, templateShareable:false, 模板:sap/m/CustomListItem中需要新的CustomListItem{// // ... }, // ... } 这确实为控制器增加了很多LOC,但避免了意外的副作用

我们可以通过使用包装将模板定义保存在XML中,但这种做法在我使用一些过时的SAPUI5控件时引发了其他问题。但您可能想尝试一下:

'语法。动态过滤器仍然需要创建并添加到控制器中单独绑定的列表中

首先挂起列表绑定,以防止在没有$filter查询的情况下过早发送请求。一旦绑定恢复,将发送一个而不是两个请求

{//控制器 onInit:异步函数{ const myFilters=new Filter{/*…*/};//sap/ui/model/Filter中需要 等待this.getOwnerComponent.getModel.metadataLoaded;//防止竞争条件 this.byIdidListCart.getBindingitems//access ODataListBinding .FilterMyFilter,应用 .resume;//从这里开始发送请求。 }, formatDate:functionoContext{ 返回/*格式日期*/; }, createGroupHeader:functionGroup{ 从sap/m/GroupHeaderListItem返回新的GroupHeaderListItem{//required 标题:/*使用oGroup.key格式化的组标题*/ }; }, //没有来自控制器的列表绑定 }
通常,在没有在父控件中预定义相应的列表绑定的情况下,用XML声明模板不是一个好的做法。否则,它只是添加一个简单的条目,UI5最初会将其与列表一起呈现。然后在控制器的列表绑定完成后的第二个呈现周期中克隆和替换该单个项。我想这就是分组的问题所在;第一个项目不再是sap.m.CustomListItem,而是sap.m.GroupHeaderListItem,在渲染其余项目时会产生副作用

最好在控制器中完全创建模板:

{//项目绑定信息 路径:/CartSet, templateShareable:false, 模板:sap/m/CustomListItem中需要新的CustomListItem{// // ... }, // ... } 这确实为控制器增加了很多LOC,但避免了意外的副作用

我们可以通过使用包装将模板定义保存在XML中,但这种做法在我使用一些过时的SAPUI5控件时引发了其他问题。但您可能想尝试一下:

'语法。动态过滤器仍然需要创建并添加到控制器中单独绑定的列表中

首先挂起列表绑定,以防止在没有$filter查询的情况下过早发送请求。一旦绑定恢复,将发送一个而不是两个请求

{//控制器 onInit:异步函数{ const myFilters=new Filter{/*…*/};//sap/ui/model/Filter中需要 等待this.getOwnerComponent.getModel.metadataLoaded;//防止竞争条件 this.byIdidListCart.getBindingitems//access ODataListBinding .FilterMyFilter,应用 .resume;//从这里开始发送请求。 }, formatDate:functionoContext{ 返回/* 格式化日期*/; }, createGroupHeader:functionGroup{ 从sap/m/GroupHeaderListItem返回新的GroupHeaderListItem{//required 标题:/*使用oGroup.key格式化的组标题*/ }; }, //没有来自控制器的列表绑定 }
1.谢谢你的回答!添加数据对解决第二个问题非常有效。但是,它仍然显示重复的分组标题:有什么想法吗?2.您提到:动态过滤器仍然需要创建并添加到控制器中单独绑定的列表中。在控制器中添加动态过滤器,但仍然用xml绑定列表的最佳代码实践是什么?@jor关于复制头的第二个问题,我们需要更多信息。因为我无法复制它,所以我假设它取决于模型数据以及它们在喂给石斑鱼之前的格式。这一信息在这个问题中缺失。我建议开始一个新的问题,更详细一些,或者最好是一个简单的问题。关于在控制器中添加过滤器;我增强了上面的回答以给出一个示例。@jor上一个代码段控制器中有一个错误。ODataListBinding应在加载metadataLoaded后访问,因为视图最初未附加到其父视图。现在修好了。谢谢你的回答!添加数据对解决第二个问题非常有效。但是,它仍然显示重复的分组标题:有什么想法吗?2.您提到:动态过滤器仍然需要创建并添加到控制器中单独绑定的列表中。在控制器中添加动态过滤器,但仍然用xml绑定列表的最佳代码实践是什么?@jor关于复制头的第二个问题,我们需要更多信息。因为我无法复制它,所以我假设它取决于模型数据以及它们在喂给石斑鱼之前的格式。这一信息在这个问题中缺失。我建议开始一个新的问题,更详细一些,或者最好是一个简单的问题。关于在控制器中添加过滤器;我增强了上面的回答以给出一个示例。@jor上一个代码段控制器中有一个错误。ODataListBinding应在加载metadataLoaded后访问,因为视图最初未附加到其父视图。现在修好了。