我在 sap.ui.table 面临一个小问题。如果删除记录,我想取消选中表格的复选框。在这里我可以删除记录,但是复选框的选择没有被清除,而是附加到下面一行。
在上图中,如果您看到,如果我删除“Rani Test”,Rani Test行将被删除但复选框将被选中“Surya Test”。请检查以下代码..
onPressDelete: function(evt) {
var deleteRecord = evt.getSource().getBindingContext('familyDetailsModel').getObject();
var tableId = this.getView().byId("familyDetailsModel");
var index = tableId.getSelectedIndex();
//this.getView().byId("familyDetailsModel").removeSelectionInterval(index,1);
for (var i = 0; i < this.getView().getModel('familyDetailsModel').getData().length; i++) {
if (this.getView().getModel('familyDetailsModel').getData()[i] == deleteRecord) {
this.getView().byId("familyDetailsModel").removeSelectionInterval(i, i);
this.getView().getModel('familyDetailsModel').getData().splice(i, 1);
this.getView().getModel('familyDetailsModel').refresh();
break;
}
}
},
在上面的代码中, splice()方法用于删除正常工作的行。但是没有取消选中复选框。要取消选中使用 removeSelectionInterval()方法尝试的复选框。但它的表现并不像预期的那样。
有人可以帮我解决这个问题吗
提前致谢
答案 0 :(得分:1)
此行var index = tableId.getSelectedIndex();
在您的方案中返回-1。此外,要删除一行,您需要指定removeSelectionInterval(index,index);
第二个参数不是要删除的位置数。是 indexTo ,因此您要从所选行中删除所选行。
从事件中获取行索引将更适合您。试试这个:
var iIndex = oEvent.getSource().getParent().getIndex();
var oTable = this.getView().byId("__table0");
oTable.removeSelectionInterval(iIndex, iIndex);
这里的代码段为:https://plnkr.co/edit/wkMc4LcjYYS3K73ClYUc?p=preview