SAPUI5 - 带有工厂函数的 sap.m.Table 不显示列和项目
Posted
技术标签:
【中文标题】SAPUI5 - 带有工厂函数的 sap.m.Table 不显示列和项目【英文标题】:SAPUI5 - sap.m.Table with factory functions not showing columns and items 【发布时间】:2016-12-23 12:57:50 【问题描述】:我有一个要求,我必须从 oData 动态填充列和行。出于测试目的,我为列和行创建了以下 JSON 文件。
column.json
"Columns": [
"column": "col1" ,
"column": "col2" ,
"column": "col3"
]
row.json
"Rows": [
"col1": "abc",
"col2": "def",
"col3": "ghi"
,
"col1": "jkl",
"col2": "mno",
"col3": "pqr"
]
这是我的看法
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
controllerName="sam.test" xmlns:html="http://www.w3.org/1999/xhtml">
<Table id="ID"
columns="path: 'Column>/Columns', factory: '.populateColumns'"
items="path: 'Row>/Rows', factory: '.populateItems'">
</Table></core:View>
请注意,在清单文件中,“Column”指向 column.json,“Row”指向 row.json 文件。
这是我对应的控制器 -
sap.ui.controller("sam.test",
// onInit: function()
// ,
// onBeforeRendering: function()
//
// ,
// onAfterRendering: function()
//
// ,
// onExit: function()
//
//
populateItems: function(sId, oContext)
var row = new sap.m.ColumnListItem(sId,
type: "Active",
cell: [
new Text(
text: "Column>col1"
),
new Text(
text: "Column>col2"
),
new Text(
text: "Column>col3"
)
]
);
return row;
,
populateColumns: function(sId, oContext)
var sColumnId = oContext.getObject().column;
return new sap.ui.table.Column(
id: sColumnId,
label: sColumnId,
template: sColumnId,
sortProperty: sColumnId,
filterProperty: sColumnId
);
);
但这不起作用。它呈现没有列标题和行的表。当我将行直接绑定到 Table 的项目聚合并提供具有相同值的列聚合时,它可以工作。
我错过了什么吗?我很难弄清楚这一点。任何指针将不胜感激
谢谢!
【问题讨论】:
【参考方案1】:我发现的 3 个错误:
-
错误的列类型:新的 sap.ui.table.Column - 正确的列类型应该是 sap.m.Column,因为这是一个 sap.m.Table。
用于 sap.m.ColumnListItem 的聚合名称错误:正确的聚合是 cells 和 not cell(错字)。李>
错误的模型绑定到 ColumnListItem:它应该是 Row>col1 而 不是 Column>col1 因为 Row 模型存储数据。
让我们纠正这些错误,下面是工作代码:
populateItems: function(sId, oContext)
var row = new sap.m.ColumnListItem(sId,
type: "Active",
cells: [
new sap.m.Text(
text: "Row>col1"
),
new sap.m.Text(
text: "Row>col2"
),
new sap.m.Text(
text: "Row>col3"
)
]
);
return row;
,
populateColumns: function(sId, oContext)
var sColumnId = oContext.getObject().column;
return new sap.m.Column(
header: new sap.m.Text(
text:'Column>column'
)
);
,
让我知道这是否有效。
【讨论】:
以上是关于SAPUI5 - 带有工厂函数的 sap.m.Table 不显示列和项目的主要内容,如果未能解决你的问题,请参考以下文章
SAPUI5:通过 setVisibility 隐藏 <List> 不起作用
SAPUI5 / OPENUI5 javascript视图HTML元素渲染