我有一个绑定到JSON模型的表。除了单元格的内容之外,JSON模型还包含一个属性,该属性包含应该应用于列的模板元素的类。
有没有办法将此属性绑定到列模板?
谢谢!
答案 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
。TextView
和Link
。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"
})
根据您可能需要渲染的不同控件的数量,这对您来说也可能是一种可行的方法。