sap.m.Table与不可见的行不显示"没有数据"

时间:2015-02-17 13:14:20

标签: sapui5 sap.m

我有一个sap.m.Table我在其中映射一个对象数组(行) 我没有在visible中的sap.m.ColumnListItem属性显示一些行。

一切正常,但当表格不包含任何行时,结果如下: enter image description here

文字"没有数据"没有显示,我看到一个简单的空表:(

这是我想要达到的结果: enter image description here 我怎么能这样做?

4 个答案:

答案 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

  • noDataText:string(无需设置,有默认值)
  • showNoData:boolean(默认值:true)

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();
   });
};