SAPUI5我的片段被关闭

时间:2015-02-27 09:56:47

标签: fragment sapui5

我正在开发SAPui5 APP。 我创建了一个带有sap.m.Popover的片段xml,在Popover的内容中我添加了2 sap.m.MultiCombobox。当我关闭multiombobox的选择时,我的popover被关闭了。任何解决方案?

片段代码:

<core:FragmentDefinition
  xmlns="sap.m"
  xmlns:l="sap.ui.layout"
  xmlns:core="sap.ui.core">
  <Popover
    class="sapUiPopupWithPadding"
    title="Filtro Asignación"
    placement="Top" >
  <l:VerticalLayout>
    <Label text="Fecha"   ></Label>
    <DatePicker id="idDatePickerPopover"></DatePicker>
    <Label text="Zona"   ></Label>
    <MultiComboBox id="idZonaCombo" selectionFinish="selectionCombo" items="{path: '/AsGrShlpCollection',sorter: { path: 'AsGrDesc' }}">
        <core:Item key="{AsGrId}" text="{AsGrDesc}" />
    </MultiComboBox>
    <Label text="Asignación"></Label>
    <MultiComboBox id="idAsignado" selectionFinish="selectionCombo" items="{path: '/DAsDescShlpCollection',sorter: { path: 'DAsDesc' }}">
        <core:Item key="{DAsDescId}" text="{DAsDesc}" />
    </MultiComboBox>
  </l:VerticalLayout>
    <footer>
      <Toolbar>
        <ToolbarSpacer/>
        <Button
          text="Aceptar"
          press="aplicarFiltros" />
        <Button
          text="Cancelar"
          press="cancelarFiltros" />
      </Toolbar>
    </footer>
  </Popover>
</core:FragmentDefinition>

控制器功能代码:

aplicarFiltros: function(oEvent){
        var oDatePicker = sap.ui.getCore().byId("idDatePickerPopover");
        var oMultiCombo = sap.ui.getCore().byId("idZonaCombo");
        var oMultiComboAsignado = sap.ui.getCore().byId("idAsignado");
        var sDate = oDatePicker.getDateValue().toString();// pasamos la fecha a string
        var dateFormat = sap.ui.core.format.DateFormat.getDateInstance({pattern : "yyyyMMdd" });  //le damos formato 
        var dateFormatLabel = sap.ui.core.format.DateFormat.getDateInstance({pattern : "dd/MM/yyyy" });
        var sDateStr = dateFormat.format(new Date(sDate));
        var sDateLabel = dateFormatLabel.format(new Date(sDate));

        var filters= [new sap.ui.model.Filter("AsDate",sap.ui.model.FilterOperator.EQ, sDateStr)];// creamos array filtros y añadimos el de fecha

        var lSelectedItems = oMultiCombo.getSelectedItems();//cogemos los items selecionados del Combo 
        var sLabelzone="";

             for (var i = 0; i < lSelectedItems.length; i++) {//loop para pushear en el array todos los filtros seleccionados 
                filters.push(new sap.ui.model.Filter("AsGrId",sap.ui.model.FilterOperator.EQ,lSelectedItems[i].getKey()));
                sLabelzone = sLabelzone + lSelectedItems[i].getText();
                sLabelzone = sLabelzone + " ";


        }
        var sLabeltipo="";

        var lSelectedItemsCombo2 = oMultiComboAsignado.getSelectedItems();

            for (var i = 0; i < lSelectedItemsCombo2.length; i++) {//loop para pushear en el array todos los filtros seleccionados 
                filters.push(new sap.ui.model.Filter("DAsDescId",sap.ui.model.FilterOperator.EQ,lSelectedItemsCombo2[i].getKey()));
                sLabeltipo = sLabeltipo + lSelectedItemsCombo2[i].getText();

            }


        jQuery.sap.require("jquery.sap.storage");
        var oStorage = jQuery.sap.storage(jQuery.sap.storage.Type.local);   
        oStorage.put("arrayFilters",filters);// guardamos los filtros en el Storage

        this.getView().byId("master1List").getBinding("items").filter(filters);// bindeamos y aplicamos filtros 
        // this.getView().byId("master1List").setHeaderText(sDateLabel+" | "+sLabelzone+" | "+sLabeltipo);
        sap.ui.getCore().byId("idDatePop").setText(sDateLabel);
        sap.ui.getCore().byId("idZonaPop").setText(sLabelzone);
        sap.ui.getCore().byId("idAsignPop").setText(sLabeltipo);




    },

1 个答案:

答案 0 :(得分:2)

尝试设置&#39;模式&#39;属性如果你的sap.m.Popover为true。当您在弹出区域外单击时,这可以防止它关闭。