我有一个sap.m.Table
我在其中映射一个对象数组(行)
我没有在visible
中的sap.m.ColumnListItem
属性显示一些行。
一切正常,但当表格不包含任何行时,结果如下:
文字"没有数据"没有显示,我看到一个简单的空表:(
这是我想要达到的结果: 我怎么能这样做?
答案 0 :(得分:2)
您正在描述一种情况,即您绑定了表的项聚合,但只是使用visible属性来抑制行显示。表仍然有项目绑定,因此不会显示“无数据”文本,因为有数据。这是对的。这里的代码片段就是你所描述的。
var oTable = sap.m.Table("salesarea", {
columns : [
new sap.m.Column({
header : new sap.m.Text({text: "Place"})
})
],
items: {
path: "/places",
template: new sap.m.ColumnListItem({
visible : false,
cells : [
new sap.m.Text({text: "{name}"})
]
})
}
});
oTable
.setModel(new sap.ui.model.json.JSONModel({
places: [
{ name: "Manchester" },
{ name: "Liverpool" },
{ name: "Leeds" },
{ name: "Sheffield" }
]
}))
.placeAt("content");
jQuery.sap.require("sap.m.MessageToast");
alert("Table has " + oTable.getItems().length + " items");
<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" id="sap-ui-bootstrap" data-sap-ui-libs="sap.m" data-sap-ui-theme="sap_bluecrystal"></script>
<div id="content"></div>
答案 1 :(得分:1)
答案是使用Filter来隐藏Formatter的行。 但是如果使用格式化程序,我可以隐藏一个属性为null的行,通过Filter我有一个很小的问题 Filter test function not start when parameter is null
答案 2 :(得分:0)
默认情况下应该显示文本。两个猜测:
您的数据可能包含一个(甚至多个)空条目,以便呈现ColumnListItem但没有可见内容。
您错误配置了属于sap.m.Table
resp的其中一个属性。 sap.m.ListBase
:
GL 克里斯
答案 3 :(得分:0)
oTable.shouldRenderItems = function() {
var bShouldRenderItems = sap.m.Table.prototype.shouldRenderItems.call(oTable);
return bShouldRenderItems && oTable.getItems().some(function(oItem) {
return oItem.getVisible();
});
};