我有一个表sap.ui.table.Table ans,我有一个模型,其中有些记录有链接,有些没有。我想在列中的sap.m.Link组件中呈现链接,当链接在记录中不可用时,它应该呈现“没有提供链接”。在列中的sap.m.Text中。
因为sap.ui.table.Column具有模板聚合,它不支持绑定聚合,因为它只支持0或1个控件。格式化程序也适用于这里。是否可以根据模块数据在运行时更改列的内容?
我的模块数据是:
var data = [{
id : 1,
link : 'abc.com'
},
{
id : 2
},
{
id : 3,
link : 'pqr.com'
}]我提供的代码是:
var link = new sap.m.Link({text : "{link}"});
var noLink = new sap.m.Text({text : "Link is not provided."});
var idColumn = new sap.ui.table.Column({
label : [new sap.m.Label({text : "ID"})],
template : [new sap.m.Text({text : "{id}"})]
});
var linkColumn = new sap.ui.table.Column({
label : [new sap.m.Label({text : "Link"})],
template : [??????]
});
var table = new sap.ui.table.Table({
columns : [idColumn, linkColumn]
});
var model = new sap.ui.model.json.JSONModel();
model.setData({items : data});
table.setModel(model);
table.bindRows("/items");我想根据模块中的数据在列link和noLink中添加likColumn运行时。我怎样才能做到这一点?
发布于 2019-01-03 17:01:56
可以使用formatter更改每列的显示内容。
例如:
new sap.m.Link({
width: "20em",
//editable: false,
//text: "{items>link}"
text: {
path: "items>link",
formatter: function(link){
if (link === undefined) return "Link is not provided"
return link;
}
}
});
...
oTable.addEventDelegate({
onAfterRendering: function(){
$('#idTable a:contains("Link is not provided")').removeClass("sapMLnk");
}
}, oTable);更新:--这是一个jsbin,包含您需要的全部示例:更新的例子
https://stackoverflow.com/questions/54019792
复制相似问题