SAPUI5表 - 有条件地改变字体大小和字体颜色(在SAP中) - 如何做到对不对?

时间:2015-04-02 09:14:35

标签: fonts colors size sapui5

由于SCN上有很多线程,而且人们正试图找出如何有条件地更改字体颜色和字体大小,你会发现一个通过jQuery操作CSS或DOM的解决方案 - 那不是它应该的方式。

我想通过SAP后端展示如何进行设置,控制颜色和字体!

简单的例子,您在SAPUI5表中显示负值和正值 - 让我们说正值:

您需要在实体中使用更多属性,一个用于设计,一个用于类:

enter image description here

然后使用相应的值在ABAP中增强您的方法(稍后详细解释哪些值可用):

enter image description here

最后在UI5表中定义一个引用:

enter image description here

然后你去了,突出显示了一个具有正面含义的单行(对不起黑色...它不适合公众;-)所有其他行不是粗体而不是绿色) enter image description here

SAP中的可用选项: https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.commons.TextViewDesign.html https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.commons.TextViewColor.html

1 个答案:

答案 0 :(得分:3)

除了创建自己的sap.ui.table.Column实现之外,没有正式的方法可以做这样的事情。

无论如何,你可以在这里使用这个小解决方法添加条件样式类:

var oColumn = new sap.ui.table.Column({
    label: new sap.ui.commons.Label({
        text: "Last Name"
    }),
    template: new sap.ui.commons.TextView({
        text: {
            path: 'Counter',
            formatter: function(sValue) {
                // in here this refers to your TextView
                // get the cell (depending on your template you might have to add more getParent calls here for nested controls)
                var oCell = this.getParent();

                // remove all possible style classes first because table cells might get reused
                oCell.removeStyleClass("newStyleClass");
                oCell.removeStyleClass("otherStyleClass");

                // add conditional style
                if (whatever) {
                    oCell.addStyleClass("newStyleClass");
                } else {
                    oCell.addStyleClass("otherStyleClass");
                }

                // just statically return the text since we are not interested in changing it
                return sValue;
            }
        }
    })
});

我刚写下来并没有执行,但它应该足以引导你;)

要从后端执行此操作,您只需在服务中提供一个附加字段,比如说'styleClass',它绑定到模板的任何属性,并使用格式化程序设置样式类,如上所示

BR 克里斯