我是SAPUI5开发的新手,在表中进行数据绑定时遇到问题。在我的其他表中它可以工作,但是这个很奇怪。
我正在打开一个值帮助程序对话框,并希望在表中显示一些数据。
我当前的代码是:
//
oTable = this._oValueHelpDialog.getTable();
oTable.setModel(this.getModel());
oTable.setModel(oCol, "columns");
// bind aggregation
// items
// shrhelpSet
// spalten heißen key und value
var oTemplate = new sap.m.ColumnListItem({
cells: [
new sap.m.Text({
text: "{key}"
}),
new sap.m.Text({
text: "{value}"
})]
});
oTable.bindAggregation("items", "/shrhelpSet", oTemplate);
我的控制台说“聚合”项目在Element sap.ui.table.Table #__ table0中不存在”当我使用另一种绑定方法(例如oTable.bindItems()或bindRows())时,它表示该方法未定义或找不到。我很惊讶我在值助手中有这个问题,在我的其他表中我没有数据绑定问题。
sap.m.Table具有聚合“项目”,但是在您的情况下,该表是使用聚合“行”的“ sap.ui.table.Table”。这也是其他方法不起作用的原因。
“ ColumnListItem”也不起作用,因为聚合需要“ sap.ui.table.Row”。
关于数据绑定,请查看grid table的示例。
这为我工作并解决了我的问题
var aColumnData = [{
columnId: "Key"
}, {
columnId: "Value"
}];
var aData = [{
Key: "asdf",
Value: "hey"
}, {
Key: "abcd",
Value: "hey2"
}];
var oModel2 = new sap.ui.model.json.JSONModel();
oModel2.setData({
columns: aColumnData,
rows: aData
});
oTable.setModel(oModel2);
oTable.bindColumns("/columns", function(index, context) {
var sColumnId = context.getObject().columnId;
//alert(sColumnId);
return new sap.ui.table.Column({
id : sColumnId,
label: sColumnId,
template: sColumnId
});
});
oTable.bindRows("/rows");