如何在智能表SAPUI5中更改图标的文本

时间:2016-08-10 12:04:31

标签: javascript odata sapui5 smart-table

我尝试将智能表中的状态值0,1转换为带格式化程序的图标。到目前为止,我创建了Custom列并使用OData填充它并插入Smart Table。

以下是我在自定义列的XML视图中的代码:

</Column>
</columns>
<items>
<ColumnListItem>
 <cells>
  <ObjectStatus 
 text="{Status}" state="{path: 'Status', formatter: '.status'}" />
 </cells>
</ColumnListItem>
</items>
</Table>

这是我的控制者:

status : function(Status){
    if (Status === "0" ){return new sap.ui.core.IconPool.getIconURI("sap-icon://accept");
    }
    else {return new sap.ui.core.IconPool.getIconURI("sap-icon://decline");
    }
   },

我在chrome调试器Error screenshot

中遇到此错误

2 个答案:

答案 0 :(得分:1)

图标应该使用属性ObjectStatus传递到icon控件,而不是statestate属性应包含字符串/文本值,该值将用作文本标签。

格式化程序也可以简单得多。您可以将图标网址作为字符串传递,而不是传递URI:

status: function(Status) {
    if (Status === "0") {
        return "sap-icon://accept";
    } else {
        return "sap-icon://decline";
    }
}

答案 1 :(得分:1)

这是将智能表的自定义列中的状态值0,1,2更改为sapui5图标的解决方案。

view.xml用

<items>
<ColumnListItem >
<cells>
<ObjectStatus icon="{path: 'Status', formatter: '.status'}" />
</cells>
</ColumnListItem>
</items>

和controller.js

status: function(Status) {
    if (Status === "0") {
        return "sap-icon://status-error";
    }  
    if(Status === "1"){
        return "sap-icon://status-positive";
    }
    if(Status === "2"){
        return "sap-icon://status-critical";
    }
},