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插入一個項目 –