在MultiComboBox中清除选择

时间:2015-10-02 13:57:33

标签: sapui5

我想在对话框中使用MultiComboBox从一组项目中进行多项选择。 我从这个例子开始:https://openui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.MultiComboBox/preview

我的问题是,当我第二次打开对话框时,我不知道如何删除上一个选择的选定键...

我试过了:

  • .clearSelection()
  • .getSelectedItems()= []
  • .getSelectedKeys()= []
  • .removeAllItems()
  • .removeAllSelectedItems()
  • .setSelectedItems([])
  • setSelectedKeys([])

但旧的选择仍然是

2 个答案:

答案 0 :(得分:0)

如果您想在用户打开选择选项弹出窗口时清除以前选择的项目,则以下代码有效:

var oMulti = new sap.m.MultiComboBox({
  id: "multi",
  items: [
    new sap.ui.core.Item({text: "item 1", key:"item1"}),
    new sap.ui.core.Item({text: "item 2", key:"item2"}),
    new sap.ui.core.Item({text: "item 3", key:"item3"}),
    new sap.ui.core.Item({text: "item 4", key:"item4"}),
    new sap.ui.core.Item({text: "item 5", key:"item5"}),
  ]
});
oMulti.onAfterRenderingPicker = function(){
  if (sap.m.MultiComboBox.prototype.onAfterRenderingPicker) {
      sap.m.MultiComboBox.prototype.onAfterRenderingPicker.apply(this);
  }
  oMulti.clearSelection();  
};

这是一个有效的JSBin

如果有人可以建议更清洁或更简单的解决方案,我也很乐意学习它。

答案 1 :(得分:-1)

我的解决方案是destroy对话框片段并且每次都重新创建它:

if (myDialog !== undefined)
            myDialog .destroy();
myDialog  = sap.ui.xmlfragment("view.fragment.myDialog", this);