在SmartFilterBar控件中自定义ValueHelpDialog,以同时显示一个表。

2020-08-24 22:29发布

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

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


嗨,专家们!
我正面临一个使我倒挂的问题...

我在tCode SEGW下有一个SAP Annotations产品,在Fiori中,我想显示一些自定义的ValueHelpDialogs 使用表,以便用户可以从该表中搜索并选择记录。
我已经实现了自定义默认值HelpDialog的功能,但是每次打开时它都无法正确显示:

如我们所见,打开对话框,并选择tabBar选项"定义条件"。 在此视图中还显示了带有记录的表(这是错误的)。 用户移至"从列表中选择"选项并返回到"定义条件"后,该表将不再显示,这是正确的。

表过滤器运行正常,并且在输入字段中正确设置了记录选择(令牌),因此我在这里问的唯一一个" bug"。

¿如何在不将ABAP Proyect更改为"注释+词汇"的情况下解决此问题?

这是我自定义默认ValueHelpDialog的方式:(显示的基本代码)

 _onValueHelpRequest:函数(事件){
   尝试{
    //event.preventDefault(); //什么都不做
     this._currentFilterControl = event.getSource();
     var controlId = event.getParameter(" id"); //event.getSource()。getId();
     var labelText = this._currentFilterControl.getLabels()[0] .getText();
     var me = this;
     如果(!sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.defaultBeforeRendering)
     {
       sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.defaultBeforeRendering = sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onBeforeRendering;
     }
     sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onBeforeRendering = function(oEvent){
      //" this"具有valueHelpDialog对象
       this.defaultBeforeRendering(); //调用默认的BeforeRendering方法
       我._customizeDialog(
          这个,
          me._getKeysByFilterControlId(controlId),
          sap.ui.Device.system.phone,
          真正,
          真正,
          假,
          me._getModelByFilterControlId(controlId),
          me._getColumnsByFilterControlId(controlId)
        );
        this.update();
      };
    } catch(err){
      console.log([" _ onValueHelpRequest",err]);
    }
 },

 _customizeDialog:函数(
   dialogObj,
   键,
   伸展,
   支持多选
   supportRanges,
   supportRangesOnly,
   模型,
   列
 ){
   dialogObj.setKey(keys.code ||"");
   dialogObj.setDescriptionKey(keys.description ||"");
   dialogObj.setStretch(stretch || sap.ui.Device.system.phone);
   dialogObj.setSupportMultiselect(supportMultiselect);
   dialogObj.setSupportRanges(supportRanges);
   dialogObj.setSupportRangesOnly(supportRangesOnly);
   dialogObj.addStyleClass(" sapUiSizeCompact");
   _buildFilterBar(dialogObj,列); //运行正常。  Fbar的作品
   _bindModel(dialogObj,列,模型); //运行正常。 该表已正确显示
   返回dialogObj;
 } 

详细信息功能(例如" _buildFilterBar"或" _bindModel")是从此处
如果您需要一些额外的代码,只需提出要求,我将其发布:- )


谢谢!

(22.3 kB)

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

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


嗨,专家们!
我正面临一个使我倒挂的问题...

我在tCode SEGW下有一个SAP Annotations产品,在Fiori中,我想显示一些自定义的ValueHelpDialogs 使用表,以便用户可以从该表中搜索并选择记录。
我已经实现了自定义默认值HelpDialog的功能,但是每次打开时它都无法正确显示:

如我们所见,打开对话框,并选择tabBar选项"定义条件"。 在此视图中还显示了带有记录的表(这是错误的)。 用户移至"从列表中选择"选项并返回到"定义条件"后,该表将不再显示,这是正确的。

表过滤器运行正常,并且在输入字段中正确设置了记录选择(令牌),因此我在这里问的唯一一个" bug"。

¿如何在不将ABAP Proyect更改为"注释+词汇"的情况下解决此问题?

这是我自定义默认ValueHelpDialog的方式:(显示的基本代码)

 _onValueHelpRequest:函数(事件){
   尝试{
    //event.preventDefault(); //什么都不做
     this._currentFilterControl = event.getSource();
     var controlId = event.getParameter(" id"); //event.getSource()。getId();
     var labelText = this._currentFilterControl.getLabels()[0] .getText();
     var me = this;
     如果(!sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.defaultBeforeRendering)
     {
       sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.defaultBeforeRendering = sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onBeforeRendering;
     }
     sap.ui.comp.valuehelpdialog.ValueHelpDialog.prototype.onBeforeRendering = function(oEvent){
      //" this"具有valueHelpDialog对象
       this.defaultBeforeRendering(); //调用默认的BeforeRendering方法
       我._customizeDialog(
          这个,
          me._getKeysByFilterControlId(controlId),
          sap.ui.Device.system.phone,
          真正,
          真正,
          假,
          me._getModelByFilterControlId(controlId),
          me._getColumnsByFilterControlId(controlId)
        );
        this.update();
      };
    } catch(err){
      console.log([" _ onValueHelpRequest",err]);
    }
 },

 _customizeDialog:函数(
   dialogObj,
   键,
   伸展,
   支持多选
   supportRanges,
   supportRangesOnly,
   模型,
   列
 ){
   dialogObj.setKey(keys.code ||"");
   dialogObj.setDescriptionKey(keys.description ||"");
   dialogObj.setStretch(stretch || sap.ui.Device.system.phone);
   dialogObj.setSupportMultiselect(supportMultiselect);
   dialogObj.setSupportRanges(supportRanges);
   dialogObj.setSupportRangesOnly(supportRangesOnly);
   dialogObj.addStyleClass(" sapUiSizeCompact");
   _buildFilterBar(dialogObj,列); //运行正常。  Fbar的作品
   _bindModel(dialogObj,列,模型); //运行正常。 该表已正确显示
   返回dialogObj;
 } 

详细信息功能(例如" _buildFilterBar"或" _bindModel")是从此处
如果您需要一些额外的代码,只需提出要求,我将其发布:- )


谢谢!

(22.3 kB)
付费偷看设置
发送
1条回答
zhangjiyang1323
1楼 · 2020-08-24 23:01.采纳回答

好,知道了!

我只需要在" onAfterOpen"事件中选择工具栏中的第一项。

这是代码:

 var tabBar = aoEvent.getSource()._ oTabBar;
 var items = tabBar.getItems(); 
if(items){
tabBar.setSelectedItem(items [0]);
tabBar.setSelectedKey(items [0] .getKey());
}

谢谢!

一周热门 更多>