12
我遇到了问题,我的表列和行都需要动态绑定才能工作。表列和行的动态绑定
假设我有两个型号,一个拿着表格列信息:
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");
错误的部分是绑定到TextView模板中的当前列;这应该是动态的(“col1”,“col2”等),并在飞行中完成 - 这是什么绑定是无论如何,我假设 - 但我不能让它工作...
我猜我错过了简单而平凡的事情,但我现在有点失落... 任何帮助,高度赞赏!
==============================
编辑:我得到了它通过迭代的工作列阵列,通过addColumn()方法:
jQuery.each(aColumnData, function(i, v) {
oTable.addColumn(new sap.ui.table.Column({
label : v.columnDesc,
template: new sap.ui.commons.TextView().bindProperty("text", v.columnId)
}));
});
...但我希望会有使用bindColumns()/ bindRows一个更简洁的方法()方法:
优秀@ Jasper_07,就像一个魅力!你是一个真正的生活**和**倍速! :-) – Qualiture
是否也可以修改一个textview模板中的单个行和所有其他链接模板中的行? – zyrex
@zyrex是的,你可以在绑定模板和数据后,使用oTable.insertRow(oRow,iIndex)在索引0插入一个项目 –