xmlns:cust="be.wl.CompositeControlExample.control"
<cust:TreeWithButtons id="TreeTableBasic" rows="{path:'/catalog/clothing', parameters: {arrayNames:['categories']}}" editable="true" add=".onAddLine" delete=".onDeleteLine" move=".onMoveRow" selectionMode="MultiToggle" enableSelectAll="false" ariaLabelledBy="title">
<cust:columns>
<t:Column width="13rem">
<Label text="Categories"/>
<t:template>
<Text text="{name}" wrapping="false"/>
</t:template>
</t:Column>
<t:Column width="9rem">
<Label text="Price"/>
<t:template>
<u:Currency value="{amount}" currency="{currency}"/>
</t:template>
</t:Column>
<t:Column width="11rem">
<Label text="Size"/>
<t:template>
<Select items="{path: '/sizes', templateShareable: true}" selectedKey="{size}" visible="{= !!${size}}" forceSelection="false">
<core:Item key="{key}" text="{value}"/>
</Select>
</t:template>
</t:Column>
</cust:columns>
</cust:TreeWithButtons>>
onAddLine: function(oEvent) {
var treeModel = this.getView().getModel();
var path = oEvent.getParameter("selectedPath");
var rowData = treeModel.getProperty(path) || [];
rowData.push({});
treeModel.setProperty(path, rowData);
},
onDeleteLine: function(oEvent) {
var selectedRowContext = oEvent.getParameter("selectedContext");
if (selectedRowContext) {
this._removeRow(selectedRowContext);
}
},
_removeRow: function(RemoveRowContext) {
var treeModel = this.getView().getModel();
var path = RemoveRowContext.getPath().split("/");
var lastone = parseInt(path[path.length - 1], 10);
path.pop();
path = path.join("/");
var updateDraggedParentItems = treeModel.getProperty(path).filter(function(item, index) {
return index !== lastone;
});
treeModel.setProperty(path, updateDraggedParentItems);
},
onMoveRow: function(oEvent) {
var aDraggedRowContexts = oEvent.getParameter("draggedRowContexts");
var draggedRowIndex = oEvent.getParameter("draggedRowIndex");
var oNewTargetContext = oEvent.getParameter("newTargetContext");
var treeModel = this.getView().getModel();
if (aDraggedRowContexts.length === 0 || !oNewTargetContext) {
return;
}
var oNewTarget = oNewTargetContext.getProperty();
for (var i = 0; i < aDraggedRowContexts.length; i++) {
if (oNewTargetContext.getPath().indexOf(aDraggedRowContexts[i].getPath()) === 0) {
// Avoid moving a node into one of its child nodes.
continue;
}
var targetPath = oNewTargetContext.getPath().split("/");
targetPath.pop();
targetPath = targetPath.join("/");
var updateTargetItems = treeModel.getProperty(targetPath).reduce(function(items, item, index) {
//add existing line unless it is the dragged row that was already on the same level
if (item !== aDraggedRowContexts[i].getProperty()) {
items.push(item);
}
//add dragged row after the place it has been dropped
if (item === oNewTargetContext.getObject()) {
items.push(aDraggedRowContexts[i].getProperty());
}
return items;
}, []);
this._removeRow(aDraggedRowContexts[i]);
treeModel.setProperty(targetPath, updateTargetItems);
}
}
<core:FragmentDefinition
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc" displayBlock="true"
xmlns="sap.m"
xmlns:t="sap.ui.table"
xmlns:dnd="sap.ui.core.dnd"
xmlns:u="sap.ui.unified">
<t:TreeTable id="innerTreeTable" visibleRowCountMode="Fixed" selectionMode="Single" toggleOpenState=".onToggleRow" visibleRowCount="{$this>/rowCount}" enableSelectAll="false" ariaLabelledBy="title">
<t:extension>
<OverflowToolbar>
<Title id="title" text="Clothing"/>
<ToolbarSpacer/>
<Button text="Add" press=".onAdd" visible="{$this>/editable}"/>
<Button text="Delete" press=".onDelete" visible="{$this>/editable}"/>
<Button text="Collapse all" press=".onCollapseAll"/>
<Button text="Collapse selection" press=".onCollapseSelection"/>
<Button text="Expand first level" press=".onExpandFirstLevel"/>
<Button text="Expand selection" press=".onExpandSelection"/>
</OverflowToolbar>
</t:extension>
<t:dragDropConfig>
<dnd:DragDropInfo enabled="{$this>/editable}" sourceAggregation="rows" targetAggregation="rows" dragStart=".onDragStart" drop=".onDrop"/>
</t:dragDropConfig>
</t:TreeTable>
</core:FragmentDefinition>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
8 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 |