目前我有一个sapui表,我希望将一行作为链接,所有其他行应该是textviews。我的问题是,构建表是基于列:
oTable.addColumn(new sap.ui.table.Column({
label : new sap.ui.commons.Label({
text : "Berichtsmonat",
hAlign : sap.ui.core.HorizontalAlign.Center,
}),
template : new sap.ui.commons.Link({ // <-- this should only be valid
// for one row, others should be
// new sap.ui.commons.TextView
text : "{Text01}",
press : pressListOpen,
}),
width : '120px',
hAlign : sap.ui.core.HorizontalAlign.Center,
}));
定义所有列后。
oTable.bindRows("/GetXYZ");
所以,我无法将其换成一行。我该怎么做?有可能吗?
我想我必须以另一种方式创建表,但是如何?非常感谢代码示例如何解决问题或如何正确地构建表...
答案 0 :(得分:4)
一种解决方案是将模板定义为HorizontalLayout
。向现有数据模型添加其他可见性标记,例如跟随VisibleFlagForText
和VisibleFlagForLink
( VisibleFlagForText ==!VisibleFlagForLink )。
var oText = new sap.ui.commons.TextView({
text:"{Text01}",
visible : "{VisibleFlagForText}"
});
var oLink = new sap.ui.commons.Link({
text : "{Text01}",
press : pressListOpen,
visible : "{VisibleFlagForLink}"
});
var oLayout = new sap.ui.layout.HorizontalLayout("Layout1",{content: [oText, oLink ]});
oTable.addColumn(new sap.ui.table.Column({
label : new sap.ui.commons.Label({
text : "Berichtsmonat",
hAlign : sap.ui.core.HorizontalAlign.Center,
}),
template : oLayout,
width : '120px',
hAlign : sap.ui.core.HorizontalAlign.Center,
}));
然后,您可以更新单行数据模型的可见性标记,以设置可见链接或文本视图。