My requirement is to implement Drag and Drop functionality for table items.
<Table id="idProductsList" alternateRowColors="true"
items="{path: 'mTestModel>/Data/List'}" width="70%" growing="true" growingThreshold="15"
mode="MultiSelect" growingScrollToLoad="true" sticky="ColumnHeaders,HeaderToolbar">
<headerToolbar>
<OverflowToolbar style="Clear">
<Title text="Products"/>
<ToolbarSpacer/>
<SearchField width="25%" placeholder="Search" class="sapUiTinyMarginEnd" liveChange="onFilter"/>
<Button icon="sap-icon://excel-attachment" press="onPressExportExcel" />
</OverflowToolbar>
</headerToolbar>
<columns>
<Column minScreenWidth="Tablet" demandPopin="true" hAlign="Begin">
<Text text="Title"/>
</Column>
</columns>
<items>
<ColumnListItem type="Navigation" press="onNavToMatriceDetail">
<cells>
<VBox>
<ObjectIdentifier title="{mTestModel>title}"/>
<HBox>
<Button class="sapUiTinyMarginEnd" text="Up" press="onSectionMappingUpPress"></Button>
<Button text="Down" press="onSectionMappingDownPress"></Button>
</HBox>
</VBox>
</cells>
</ColumnListItem>
</items>
</Table>
fnEnableDragAndDropforTable: function () {
var that = this;
var oModel = this.getView().getModel('mTestModel');
var oTable = this.getView().byId("idProductsList");
// Register drag and drop events
oTable.addEventDelegate({
onAfterRendering: function () {
var $items = oTable.$().find(".sapMListTblRow");
$items.attr("draggable", "true");
$items.on("dragstart", function (event) {
//finding start index
var index = Array.from(event.target.parentElement.children).indexOf(event.target);
//storing the start index within event data
event.originalEvent.dataTransfer.setData("text", index);
});
$items.on("dragover", function (event) {
event.preventDefault();
});
$items.on("drop", function (event) {
event.preventDefault();
var data = event.originalEvent.dataTransfer.getData("text");
var target = event.target;
//finding end index
var isTableRow = false;
while(!isTableRow){
if(target.className && target.className.includes("sapMListTblRow")){
isTableRow = true;
}else{
target = target.parentElement;
isTableRow = false;
}
}
if (target && target.className && target.className.includes("sapMListTblRow") && data !== "") {
var fromIndex = parseInt(data);
//end index
var toIndex = Array.from(target.parentElement.children).indexOf(target);
var aItems = oModel.getProperty("/Data/List");
var removedItem = aItems.splice(fromIndex, 1)[0];
aItems.splice(toIndex, 0, removedItem);
oModel.setProperty("/Data/List", aItems);
}
});
}
});
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
12 | |
11 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
4 | |
4 |