如何通过应用多个过滤器通过控制器将EntitySet绑定到表?

2020-09-15 09:12发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在开发自定义sapui5应用程序。 我需要根据组合框中的选择将两个不同的实体集与ui表绑定。 例如,如果我从组合框中选择Order/Notification,则需要分别将OrderSet/NotificationSet与表绑定。 这两个OrderSet和NotificationSet需要过滤器来限制数据。

我已使用以下代码对其进行绑定。 但会引发重复的ID错误。 但是我的代码中没有重复的ID。

 var fltr_NotificationType = new sap.ui.model.Filter(" Qmart",sap.ui.model.FilterOperator.EQ," M1");
 var fltr_TechnicalPlatz = new sap.ui.model.Filter(" TPLNR",sap.ui.model.FilterOperator.EQ," RR-R77-4-M/R");
 var fltr_StartDate1 = new sap.ui.model.Filter(" FromDate",sap.ui.model.FilterOperator.EQ,"(Datetime'2012-10-25T00:00:00')");;
 var fltr_EndDate1 =新sap.ui.model.Filter(" ToDate",sap.ui.model.FilterOperator.EQ,"(Datetime'2018-10-25T00:00:00')");



 oTable.setHeaderText(" Notofication List");


 var notificationTableColumn1 = new sap.m.Column(" id_table_notification_column_1",{
 标头:new sap.m.Label({
 文字:" Qmnum"
 })
 });
 oTable.addColumn(notificationTableColumn1);


 var notificationTableColumn2 = new sap.m.Column(" id_table_notification_column_2",{
 标头:new sap.m.Label({
 文字:" Qmart"
 })
 });
 oTable.addColumn(notificationTableColumn2);


 var notificationColumnList = new sap.m.ColumnListItem(" id_columnlist_notification",{
 类型:"有效"


 });
 var tableNotificationCell1 = new sap.m.Text(" id_table_notification_cell1",{
 文字:" {Qmnum}"
 });
 notificationColumnList.addCell(tableNotificationCell1);


 var tableNotificationCell2 = new sap.m.Text(" id_table_notification_cell2",{
 文字:" {Qmart}"
 });
 notificationColumnList.addCell(tableNotificationCell2);


 oTable.bindAggregation(" items",{
 路径:"/img/NotificationsSet",
 模板:notificationColumnList,
 过滤器:[fltr_NotificationType,fltr_TechnicalPlatz,fltr_StartDate1,fltr_EndDate1]
 });
 }


 


在检查的同时,

我遇到此错误。

添加重复ID为'id_table_notification_column_1'的元素


请帮助我解决他的问题。

谢谢

此致

JK。


         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我正在开发自定义sapui5应用程序。 我需要根据组合框中的选择将两个不同的实体集与ui表绑定。 例如,如果我从组合框中选择Order/Notification,则需要分别将OrderSet/NotificationSet与表绑定。 这两个OrderSet和NotificationSet需要过滤器来限制数据。

我已使用以下代码对其进行绑定。 但会引发重复的ID错误。 但是我的代码中没有重复的ID。

 var fltr_NotificationType = new sap.ui.model.Filter(" Qmart",sap.ui.model.FilterOperator.EQ," M1");
 var fltr_TechnicalPlatz = new sap.ui.model.Filter(" TPLNR",sap.ui.model.FilterOperator.EQ," RR-R77-4-M/R");
 var fltr_StartDate1 = new sap.ui.model.Filter(" FromDate",sap.ui.model.FilterOperator.EQ,"(Datetime'2012-10-25T00:00:00')");;
 var fltr_EndDate1 =新sap.ui.model.Filter(" ToDate",sap.ui.model.FilterOperator.EQ,"(Datetime'2018-10-25T00:00:00')");



 oTable.setHeaderText(" Notofication List");


 var notificationTableColumn1 = new sap.m.Column(" id_table_notification_column_1",{
 标头:new sap.m.Label({
 文字:" Qmnum"
 })
 });
 oTable.addColumn(notificationTableColumn1);


 var notificationTableColumn2 = new sap.m.Column(" id_table_notification_column_2",{
 标头:new sap.m.Label({
 文字:" Qmart"
 })
 });
 oTable.addColumn(notificationTableColumn2);


 var notificationColumnList = new sap.m.ColumnListItem(" id_columnlist_notification",{
 类型:"有效"


 });
 var tableNotificationCell1 = new sap.m.Text(" id_table_notification_cell1",{
 文字:" {Qmnum}"
 });
 notificationColumnList.addCell(tableNotificationCell1);


 var tableNotificationCell2 = new sap.m.Text(" id_table_notification_cell2",{
 文字:" {Qmart}"
 });
 notificationColumnList.addCell(tableNotificationCell2);


 oTable.bindAggregation(" items",{
 路径:"/img/NotificationsSet",
 模板:notificationColumnList,
 过滤器:[fltr_NotificationType,fltr_TechnicalPlatz,fltr_StartDate1,fltr_EndDate1]
 });
 }


 


在检查的同时,

我遇到此错误。

添加重复ID为'id_table_notification_column_1'的元素


请帮助我解决他的问题。

谢谢

此致

JK。


付费偷看设置
发送
2条回答
奄奄一息的小鱼
1楼-- · 2020-09-15 10:18

我希望您不要重复调用该代码,这显然会导致重复错误。 如果根本要多次调用代码,则将表引用持久化为this.oTable = table(已定义),并持久化模板。 然后,下次调用它时,请删除聚合,然后将其与持久化的模板和新过滤器一起添加。如果此答案不能澄清您的问题,请提供适合您情况的步骤。

2楼-- · 2020-09-15 10:11

是的 这是一种方法,您可以删除ID并执行此操作,但是每次更改类型时,它都会创建一个新表。 最好的方法是坚持下去。

您可以通过两种方式进行操作。

1。 如果您的实体具有相似的字段,请将其设为单个条目,然后根据选择一次又一次地将过滤器传递到同一张表,从而仅显示一个表而不是两个表。

2。 如果需要两个实体,则分别创建两个表并将其持久化,并根据选择动态地将它们从页面内容中删除(状态1,将显示表1,状态2,将显示表2)。

为此,最好创建2个片段,这些片段将具有2个具有各自实体集的不同表,稍后根据选择的类型将这些片段置为无效。 记住不要多次创建片段,将它们保留在控制器中。

一周热门 更多>