Sapui5 表列和行的动态绑定
我很难让表列和行的动态绑定正常工作 假设我有两个模型,一个保存表列信息:Sapui5 表列和行的动态绑定,sapui5,Sapui5,我很难让表列和行的动态绑定正常工作 假设我有两个模型,一个保存表列信息: var aColumnData = [ { columnId : "col1" }, { columnId : "col2" }, { columnId : "col3" }, { columnId : "co
var aColumnData = [
{
columnId : "col1"
},
{
columnId : "col2"
},
{
columnId : "col3"
},
{
columnId : "col4"
},
{
columnId : "col5"
}
];
其中一个有数据:
var aData = [
{
col1 : "Row 1 col 1",
col2 : "Row 1 col 2",
col3 : "Row 1 col 3",
col4 : "Row 1 col 4",
col5 : "Row 1 col 5"
},
{
col1 : "Row 2 col 1",
col2 : "Row 2 col 2",
col3 : "Row 2 col 3",
col4 : "Row 2 col 4",
col5 : "Row 2 col 5"
}
];
然后我设置模型:
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({
columns : aColumnData,
rows : aData
});
然后在视图中创建我的表:
var oTable = new sap.ui.table.Table();
var oColumnTemplate = new sap.ui.table.Column({
label : "{columnDesc}",
template : new sap.ui.commons.TextView().bindProperty("text", "<this_should_be_dynamic_but_how?>")
});
oTable.bindColumns("/columns", oColumnTemplate);
oTable.bindRows("/rows");
…但我希望使用bindColumns()/bindRows()方法会有一种更干净的方法:我以前也做过类似的事情,请参阅与您类似的示例
var oTable = new sap.ui.table.Table({
title: "Table column and data binding",
showNoData : true,
columnHeaderHeight : 10,
visibleRowCount: 7
});
oTable.setModel(oModel);
oTable.bindColumns("/columns", function(sId, oContext) {
var sColumnId = oContext.getObject().columnId;
return new sap.ui.table.Column({
id : sColumnId,
label: sColumnId,
template: sColumnId,
sortProperty: sColumnId,
filterProperty: sColumnId
});
});
oTable.bindRows("/rows");
在这个场景中,您可以使用两个全局命名的模型,一个用于元数据,一个用于数据
乙二醇
这里有一个例子Excellent@Jasper_07,效果很好!你是一个真正的生活和节省时间的人!:-)是否也可以修改textview模板中的一行以及链接模板中的所有其他行?@zyrex是的,在绑定模板和数据后,可以使用oTable在索引0处插入一个项。insertRow(oRow,iIndex)@Jasper_07是否有办法绑定数组格式的行而不是对象数组。此外,数组本身没有映射列。这里是我的问题:如果我使用XML视图和需要额外列的预定义表,那么这段代码有效吗?
var oTable = new sap.ui.table.Table({
title: "Table column and data binding",
showNoData : true,
columnHeaderHeight : 10,
visibleRowCount: 7
});
oTable.setModel(oModel);
oTable.bindColumns("/columns", function(sId, oContext) {
var sColumnId = oContext.getObject().columnId;
return new sap.ui.table.Column({
id : sColumnId,
label: sColumnId,
template: sColumnId,
sortProperty: sColumnId,
filterProperty: sColumnId
});
});
oTable.bindRows("/rows");
sap.ui.getCore().setModel(oMetaModel, 'meta');
sap.ui.getCore().setModel(oDataModel, 'data');
..
oTable.bindColumns("meta>/columns" function...
oTable.bindRows("data>/rows");