Sapui5 如何拖放表格的行
在my view.xml文件中:Sapui5 如何拖放表格的行,sapui5,Sapui5,在my view.xml文件中: <html:div class="container-fluid"> <html:div class="row"> <Table id="ConnectorModuleTable" items="{ path: '/datalist'}">
<html:div class="container-fluid">
<html:div class="row">
<Table id="ConnectorModuleTable"
items="{
path: '/datalist'}">
<columns>
<Column ><Text text="Connector Module"/></Column>
<Column ><Text text="Setting A"/></Column>
<Column ><Text text="Setting B"/></Column>
<Column ><Text text="Custom Pin"/></Column>
<Column ><Text text="Actions"/></Column>
</columns>
<items>
<ColumnListItem>
<cells>
<Text text="{Connectormodule}" wrapping="false" />
<Text text="{settingA}" wrapping="false" />
<Text text="{settingB}" wrapping="false" />
<Text text="{settingB}" wrapping="false" />
</cells>
</ColumnListItem>
</items>
</Table>
</html:div>
</html:div>
我正在尝试拖放此表的行
我已将显示列表的文档中的链接引用为:
与我在控制器中应用的表格相同,如下所示:
attachDragAndDrop: function () {
var oList = this.byId("MyTable");
oList.addDragDropConfig(new DragInfo({
sourceAggregation: "items"
}));
oList.addDragDropConfig(new DropInfo({
targetAggregation: "items",
dropPosition: "Between",
dropLayout: "Vertical",
drop: this.onDrop.bind(this)
}));
},
onDrop: function (oInfo) {
var oDragged = oInfo.getParameter("draggedControl"),
oDropped = oInfo.getParameter("droppedControl"),
sInsertPosition = oInfo.getParameter("dropPosition"),
oDraggedParent = oDragged.getParent(),
oDroppedParent = oDropped.getParent(),
oDragModel = oDraggedParent.getModel(),
oDropModel = oDroppedParent.getModel(),
oDragModelData = oDragModel.getData(),
oDropModelData = oDropModel.getData(),
iDragPosition = oDraggedParent.indexOfItem(oDragged),
iDropPosition = oDroppedParent.indexOfItem(oDropped);
// remove the item
var oItem = oDragModelData[iDragPosition];
oDragModelData.splice(iDragPosition, 1);
if (oDragModel === oDropModel && iDragPosition < iDropPosition) {
iDropPosition--;
}
// insert the control in target aggregation
if (sInsertPosition === "Before") {
oDropModelData.splice(iDropPosition, 0, oItem);
} else {
oDropModelData.splice(iDropPosition + 1, 0, oItem);
}
if (oDragModel !== oDropModel) {
oDragModel.setData(oDragModelData);
oDropModel.setData(oDropModelData);
} else {
oDropModel.setData(oDropModelData);
}
},
initData: function (datalist) {
this.byId("MyTable").setModel(new JSONModel([
datalist
]));
}
attachDragAndDrop:function(){
var oList=this.byId(“MyTable”);
oList.addDragDropConfig(新DragInfo({
sourceAggregation:“项目”
}));
oList.addDragDropConfig(新的DropInfo({
目标集合:“项目”,
dropPosition:“中间”,
液滴布局:“垂直”,
drop:this.onDrop.bind(this)
}));
},
onDrop:功能(oInfo){
var oDragged=oInfo.getParameter(“draggedControl”),
oDropped=oInfo.getParameter(“droppedControl”),
sInsertPosition=oInfo.getParameter(“dropPosition”),
oDraggedParent=oDragged.getParent(),
oDroppedParent=oDropped.getParent(),
odFragmodel=oDraggedParent.getModel(),
oDropModel=oDroppedParent.getModel(),
odfragmodeldata=odfragmodel.getData(),
oDropModelData=oDropModel.getData(),
iDragPosition=oDraggedParent.indexOfItem(oDragged),
IDROPPED=oDroppedParent.indexOfItem(oDropped);
//删除该项目
var oItem=oDragModelData[iDragPosition];
oDragModelData.拼接(iDragPosition,1);
if(odfragmodel==oDropModel&&iDragPosition
这里datalist
的所有行数据都是JSON格式的(参考)
但是这不起作用,任何帮助或指导链接都很感谢我在您的onDrop()中使用了以下视图,它起了作用。 你能描述一下,什么不起作用
<Table id="MyTable" items="{/}">
<columns>
<Column ><Text text="Connector Module"/></Column>
<Column ><Text text="Setting A"/></Column>
<Column ><Text text="Setting B"/></Column>
</columns>
<dragDropConfig>
<dnd:DragDropInfo
sourceAggregation="items"
targetAggregation="items"
dropPosition="Between"
drop=".onDrop"/>
</dragDropConfig>
<items>
<ColumnListItem>
<cells>
<Text text="{Connectormodule}" wrapping="false" />
<Text text="{settingA}" wrapping="false" />
<Text text="{settingB}" wrapping="false" />
<Text text="{settingB}" wrapping="false" />
</cells>
</ColumnListItem>
</items>
</Table>
您能看到原始表格中的数据吗? 模型的设置不正确:JSONModel构造函数需要一个对象,而不是
initData
函数中列出的数组。这对我来说似乎是个约束问题
我只是试着按如下方式修改您的代码,一切正常:
onDrop: function (oInfo) {
var oDragged = oInfo.getParameter("draggedControl"),
oDropped = oInfo.getParameter("droppedControl"),
sInsertPosition = oInfo.getParameter("dropPosition"),
oDraggedParent = oDragged.getParent(),
oDroppedParent = oDropped.getParent(),
oDragModel = oDraggedParent.getModel(),
oDropModel = oDroppedParent.getModel(),
oDragModelData = oDragModel.getData(),
oDropModelData = oDropModel.getData(),
iDragPosition = oDraggedParent.indexOfItem(oDragged),
iDropPosition = oDroppedParent.indexOfItem(oDropped);
// remove the item
var oItem = oDragModelData.datalist[iDragPosition];
oDragModelData.datalist.splice(iDragPosition, 1);
if (oDragModel === oDropModel && iDragPosition < iDropPosition) {
iDropPosition--;
}
// insert the control in target aggregation
if (sInsertPosition === "Before") {
oDropModelData.datalist.splice(iDropPosition, 0, oItem);
} else {
oDropModelData.datalist.splice(iDropPosition + 1, 0, oItem);
}
if (oDragModel !== oDropModel) {
oDragModel.setData(oDragModelData);
oDropModel.setData(oDropModelData);
} else {
oDropModel.setData(oDropModelData);
}
},
initData: function (datalist) {
//just an example
var oData = {
datalist: [{
Connectormodule: "one",
settingA: "one",
settingB: "one"
}, {
Connectormodule: "two",
settingA: "two",
settingB: "two"
}, {
Connectormodule: "three",
settingA: "three",
settingB: "three"
}]
};
var oModel = new sap.ui.model.json.JSONModel(oData);
this.byId("ConnectorModuleTable").setModel(oModel);
},
onDrop:函数(oInfo){
var oDragged=oInfo.getParameter(“draggedControl”),
oDropped=oInfo.getParameter(“droppedControl”),
sInsertPosition=oInfo.getParameter(“dropPosition”),
oDraggedParent=oDragged.getParent(),
oDroppedParent=oDropped.getParent(),
odFragmodel=oDraggedParent.getModel(),
oDropModel=oDroppedParent.getModel(),
odfragmodeldata=odfragmodel.getData(),
oDropModelData=oDropModel.getData(),
iDragPosition=oDraggedParent.indexOfItem(oDragged),
IDROPPED=oDroppedParent.indexOfItem(oDropped);
//删除该项目
var oItem=odFragmodelData.datalist[iDragPosition];
数据列表拼接(iDragPosition,1);
if(odfragmodel==oDropModel&&iDragPosition