多选列表

时间:2018-03-15 11:24:43

标签: sapui5

我有一个popover组件,我在其中添加了一个多选列表。如果选择了第一个列表项,我想将所有项的checked属性设置为true。但selectionChange事件适用于每个项目的选择事件。因此,for循环的索引值始终从零开始。在这种情况下我该怎么办?谢谢你的建议。

这是我的代码和图片截图; image url

new sap.m.List('statusTypesList', {
                            mode: 'MultiSelect',
                            selectedKeys: " ,1,2,3",
                            includeItemInSelection: true,
                            selectionChange: function(oEvent) {
                                var keyValues = "";
                                var itemArray = oEvent.oSource.getItems();
                                if(itemArray[0].getSelected()==true){                                      
                                  for (var i = 0; i < itemArray.length; i++) {
                                    oEvent.oSource.setSelectedItem(itemArray[i], true, true);
                                  }
                                }
                            }                                
                        })

1 个答案:

答案 0 :(得分:0)

检查触发事件的项目是否是列表中的第一个项目。像这样:

function(oEvent) {
   var changedItem = oEvent.getParameter('listItem');
   if(changedItem isTheFirstItem){
      //Where 'isTheFirstItem' is the condition you define to identify your first item
      var keyValues = "";
      var itemArray = oEvent.getSource().getItems();
      if(itemArray[0].getSelected()==true){                                      
         for (var i = 0; i < itemArray.length; i++) {
         oEvent.getSource().setSelectedItem(itemArray[i], true, true);
      }
   }
}

if(changedItem isTheFirstItem)声明

中定义您想要的条件

试试这个条件,也许它有效:if(changedItem === oEvent.getSource().getItems()[0]) 如果没有,只需建立自己的条件来检查它是否是第一个

注意:用户getSource()从事件中获取来源。它总是比直接访问对象

更好