隐藏Fiori Master详细信息页面中的批准/拒绝按钮

时间:2014-10-01 15:22:24

标签: javascript sapui5 sap-fiori

我希望根据某些过滤条件隐藏Fiori应用程序的详细信息页面中的批准/拒绝按钮。过滤器通过视图/控制器扩展添加到主列表视图(左侧视图)中。 现在,如果用户选择某种类型的过滤器(例如,过去订单) - 那么批准/拒绝按钮不应显示在订单详细信息页面中。 这就是我在Header / Details视图中定义按钮的方法

 this.oHeaderFooterOptions = {
                       oPositiveAction: {                       
                        sI18nBtnTxt: that.resourceBundle.getText("XBUT_APPROVE"),
                        id :"btn_approve",
                        onBtnPressed: jQuery.proxy(that.handleApprove, that)
                       },

                   oNegativeAction: {                   
                    sI18nBtnTxt: that.resourceBundle.getText("XBUT_REJECT"),
                    id :"btn_reject",
                    onBtnPressed: jQuery.proxy(that.handleReject, that)
                   },

但是在运行时,这些按钮没有分配我提到的ID,而是使用__button0和__button1的ID创建。

有没有办法在主列表视图中隐藏这些按钮?

谢谢。

3 个答案:

答案 0 :(得分:2)

<强>推荐: SAP Fiori设计原则仅涉及禁用页脚按钮而不是更改Button可见性Read More here about Guidelines

根据过滤条件,你可以这样禁用:

this.setBtnEnabled("btn_approve", false);

再次启用:this.setBtnEnabled("btn_approve", true);

同样,您可以使用this.setBtnText("btn_approve", "buttonText");

更改按钮文字

其他方式@TobiasOetzel表示使用

this.setHeaderFooterOptions(yourModifiedHeaderFooterOptions);

答案 1 :(得分:1)

您可以多次在控制器上调用setHeaderFooterOptions,例如:

//Code inside of the controller
_myHeaderFooterOptions = {
    oPositiveAction: {                       
        sI18nBtnTxt: that.resourceBundle.getText("XBUT_APPROVE"),
        id :"btn_approve",
            onBtnPressed: jQuery.proxy(that.handleApprove, that)
        },
    oNegativeAction: {                   
        sI18nBtnTxt: that.resourceBundle.getText("XBUT_REJECT"),
        id :"btn_reject",
        onBtnPressed: jQuery.proxy(that.handleReject, that)
    }
},

//set the initial options
onInit: function () {
    this.setHeaderFooterOptions(this._myHeaderFooterOptions);
},

//modify the options in an event
onFilter : function () {
    //remove the negative action to hide it
    this._myHeaderFooterOptions.oNegativeAction = undefined;
    this.setHeaderFooterOptions(this._myHeaderFooterOptions);
},

//further code

因此,通过操纵_myHeaderFooterOptions,您可以影响显示的按钮。

答案 2 :(得分:-1)

首先,在定义HeaderFooterOptions时,您应该使用 sId 而不是 id ,您可以通过 {{1}获取页脚按钮}} ,例如,批准按钮。

sId

请检查以下代码段:

S2.view.controller:您在下面定义了过滤器事件处理程序,并使用EventBus将事件this._oControlStore.oButtonListHelper.mButtons["btn_approve"] 发布到OrderTypeChanged

S3.view.controller

S3.view.controller :从onFilterChanged: function(oEvent) { // Set the filter value, here i use hard code var sFilter = "Past Orders"; sap.ui.getCore().getEventBus().publish("app", "OrderTypeChanged", { filter: sFilter }); } 订阅活动OrderTypeChanged

S2.view.controller