Sapui5 将样式类绑定到列模板?

Sapui5 将样式类绑定到列模板?,sapui5,Sapui5,我有一个绑定到JSON模型的表。除了单元格的内容外,JSON模型还包含一个属性,该属性保存应应用于列的模板元素的类 是否有方法将此属性绑定到列模板 谢谢 您可以绑定语义颜色-请参见 不幸的是,您无法将任何内容绑定到styleClass,但可以使用工厂函数而不是模板: sap.ui.table.Column({ factory : function(sId, oCtx){ return new sap.ui.commons.TextView({ te

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

是否有方法将此属性绑定到列模板


谢谢

您可以绑定语义颜色-请参见


不幸的是,您无法将任何内容绑定到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'
}]
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"
})

我有一个类似的问题:如果
DOC\u ID
值可用,则单元格应显示
链接(基于
DOC\u ID
),否则仅显示文本视图

我试图为
指定一个工厂函数。但就我所见,工厂函数甚至没有被调用

我确实成功地采用了以下方法:

  • 作为模板,我指定了一个
    水平布局
  • 作为布局的内容,我指定了
    TextView
    链接
  • 为了确保只有一个控件可见,我对每个控件的
    visible
    属性使用formatter函数进行了属性绑定
删除细节后,类似以下内容:

[{
    Name : 'John',
    SomeClass : 'Red'
}]
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"
})

根据需要渲染多少不同的控件,这可能也是一种可行的方法。

这实际上看起来很有希望,因为它提供了最大的灵活性。不幸的是它不起作用-至少对我来说不起作用。。。是否使用其他库元素或自定义元素?