代码之家  ›  专栏  ›  技术社区  ›  user2644620

sapui5 sap。用户界面。table如何通过编程取消选中表行复选框

  •  0
  • user2644620  · 技术社区  · 6 年前

    我面临一个小问题 液用户界面。桌子 。如果我删除记录,我想取消选中该表的复选框。这里我可以删除记录,但复选框的选择没有被清除,它正在为下面的行追加。 enter image description here

    在上图中,如果你看到,如果我删除 “Rani测试” ,Rani测试行将被删除,但复选框将被选中以 “Surya测试” 。请检查以下代码。。

    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;
                        }
    
    
                }
            },
    

    在上述代码中, 拼接() 我使用的方法删除工作正常的行。但复选框未被取消选中。要取消选中我尝试使用的复选框 removeSelectionInterval() 方法但它的表现并不像预期的那样。

    有人能帮我解决这个问题吗

    提前感谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Rafael López Martínez    6 年前

    此行 var index = tableId.getSelectedIndex(); 在您的场景中返回-1。此外,要删除一行,需要指定 removeSelectionInterval(index,index); 第二个参数不是要删除的位置数。是 索引到 ,因此要从选定行中删除到选定行。

    从事件中获取行索引将更好地为您服务。尝试以下操作:

    var iIndex = oEvent.getSource().getParent().getIndex();
    var oTable = this.getView().byId("__table0");
    oTable.removeSelectionInterval(iIndex, iIndex);
    

    下面是代码片段: https://plnkr.co/edit/wkMc4LcjYYS3K73ClYUc?p=preview