Button für das Kopieren einer Zeile hinzufügen.
<Table id="itemsTable" items="{oModel>/ITEMS}"> <columns> <Column id="splitColumn" hAlign="Center" demandPopin="false"> <Text text="{i18n>SPLIT}"/> </Column> </columns> <items> <ColumnListItem> <cells> <Button press="onSplitPressed" id="SPLIT_ROW" icon="{= ${oModel>CUSTOM_ITEM} === true ? 'sap-icon://delete' : 'sap-icon://add'}"/> </cells> </ColumnListItem> </items> </Table>
Nur neu hinzugefügte Zeilen sollen auch wieder gelöscht werden dürfen, daher werden manuell hinzugefügte Zeilen markiert mit CUSTOM_ITEM = True;
Via Expression Binding wird dann das erforderliche Icon bestimmt.

onSplitPressed: function (oEvent) { var oContext = oEvent.getSource().getBindingContext("oModel"); var path = oContext.getPath(); var oModel = oContext.getModel(); var oItems = oModel.getProperty("/ITEMS"); var index = path.substr(path.length - 1); //selektiertes Item lesen var oItem = oModel.getProperty(path); //was soll passieren? Zeile hinzufügen oder entfernen? if (oItem.CUSTOM_ITEM !== true) { //Neues Item anlegen var oNewItem = JSON.parse(JSON.stringify(oItem)); //Markiere neue Zeile, da nur diese auch wieder gelöscht werden darf oNewItem.CUSTOM_ITEM = true; // +1 weil Zeile soll ja nach der Aktuellen einfügt werden index++; oItems.splice(index, 0, oNewItem); } else { // Item löschen oItems.splice(index, 1); } oModel.setProperty("/ITEMS", oItems); },