sapui5 sap.ui.table如何以编程方式取消选中表格行的复选框

时间:2018-04-20 15:38:23

标签: javascript sapui5

我在 sap.ui.table 面临一个小问题。如果删除记录,我想取消选中表格的复选框。在这里我可以删除记录,但是复选框的选择没有被清除,而是附加到下面一行。enter image description here

在上图中,如果您看到,如果我删除“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()方法尝试的复选框。但它的表现并不像预期的那样。

有人可以帮我解决这个问题吗

提前致谢

1 个答案:

答案 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