Ich habe Probleme, die dynamische Bindung meiner Tabellenspalten und -zeilen zu erhalten.Dynamisches Binden von Tabellenspalten und -zeilen
Angenommen, ich habe zwei Modelle, eine der Tabellenspalte Info Halten:
var aColumnData = [
{
columnId : "col1"
},
{
columnId : "col2"
},
{
columnId : "col3"
},
{
columnId : "col4"
},
{
columnId : "col5"
}
];
und eine mit den Daten:
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"
}
];
Ich habe dann das Modell:
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({
columns : aColumnData,
rows : aData
});
Ich erstelle dann meine Tabelle in der Ansicht:
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");
Der Teil, der mich behebt, ist die Bindung an die aktuelle Spalte in der TextView-Vorlage; das sollte dynamisch sein ("col1", "col2", etc) und spontan erledigt werden - das ist, was Bindungen für sowieso sind, nehme ich an - aber ich kann es nicht zur Arbeit bringen ...
Ich denke Ich vermisse etwas Einfaches und Triviales, aber ich bin jetzt ein bisschen verloren ... Jede Hilfe wird sehr geschätzt!
==============================
EDIT: Ich habe es durch Iterieren durch die Arbeit Spalten-Array und mit Hilfe der addColumn() -Methode:
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)
}));
});
... aber ich war es gehofft, wäre ein sauberer Ansatz, um die bindColumns mit sein()/bindRows() Ansatz:
Excellent @ Jasper_07, funktioniert wie ein Zauber! Du bist ein wahres Leben ** und ** Zeitsaver! :-) – Qualiture
ist es auch möglich, eine einzelne Zeile aus einer Textview-Vorlage und alle anderen aus einer Link-Vorlage zu modifizieren? – zyrex
@zyrex Ja, Sie können nach dem Binden der Vorlage und der Daten ein Element im Index 0 einfügen, indem Sie oTable.insertRow (oRow, iIndex) verwenden –