将样式类绑定到列模板?

时间:2014-04-03 09:40:14

标签: sapui5

我有一个绑定到JSON模型的表。除了单元格的内容之外,JSON模型还包含一个属性,该属性包含应该应用于列的模板元素的类。

有没有办法将此属性绑定到列模板?

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以绑定语义颜色 - 请参阅JSB Bind TextViewColor

{
  "lastName": "Guerrero",
  "name": "Hampton",
  "birthday":  1404172800000,
  "status" : "Critical"
 }

 oControl = new sap.ui.commons.TextView({
   text: "{name}",
   semanticColor: "{status}"
 });

答案 1 :(得分:0)

不幸的是,您无法将任何内容绑定到styleClass,但您可以使用工厂函数而不是模板:

sap.ui.table.Column({
    factory : function(sId, oCtx){
        return new sap.ui.commons.TextView({
            text : oCtx.getProperty('Name')
        }).addStyleClass(oCtx.getProperty('SomeClass'))
    }
});

如果你有这样的模特:

[{
    Name : 'John',
    SomeClass : 'Red'
}]

答案 2 :(得分:0)

我遇到了类似的问题:如果DOC_ID值可用,则单元格应显示Link(基于DOC_ID),否则只显示文本视图。

我尝试为Column指定工厂功能。但据我所知,工厂功能甚至没有被召唤。

我确实使用以下方法取得了成功:

  • 作为模板,我指定了HorizontalLayout
  • 作为布局的内容,我同时指定了TextViewLink
  • 为了确保只有一个控件可见,我在每个控件的visible属性上使用formatter函数进行了属性绑定。

删除了详细信息,如下所示:

new sap.ui.table.Column({
    label: new sap.ui.commons.Label({text: "{i18n>FILE_NAME}"}),
    template: new sap.ui.layout.HorizontalLayout({
    // workaround for conditional control: 
    // if DOC_ID is not there, hide link; otherwise hide the text view
    content: [ 
        new sap.ui.commons.Link({
            text: "{FILENAME}",
            href: {
                path: "DOC_ID",
                formatter: function(value) {
                    return "http://www.example.com/" + value;
                }
            },
            visible: {
                path: "DOC_ID",
                formatter: function(value) {
                    return value != "";
                }
            }
        }),
        new sap.ui.commons.TextView({
            text: "{FILENAME}",
            visible: {
                path: "DOC_ID",
                formatter: function(value) {
                    return value == "";
                }
            }
        })
    ]
    }),
    sortProperty: "FILENAME",
    filterProperty: "FILENAME"
})

根据您可能需要渲染的不同控件的数量,这对您来说也可能是一种可行的方法。