SAPUI5 我的片段被关闭
SAPUI5 My fragment gets closed
我正在开发 SAPui5 APP。
我用 sap.m.Popover
创建了一个片段 xml,在 Popover 的内容中我添加了 2
sap.m.MultiCombobox
。当我关闭 multicombobox 的选择时,我的弹出窗口被关闭。有什么解决办法吗?
片段代码:
<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);
},
如果 sap.m.Popover 为真,请尝试设置 'modal' 属性。这可以防止它在您单击弹出框区域之外时关闭。
我正在开发 SAPui5 APP。
我用 sap.m.Popover
创建了一个片段 xml,在 Popover 的内容中我添加了 2
sap.m.MultiCombobox
。当我关闭 multicombobox 的选择时,我的弹出窗口被关闭。有什么解决办法吗?
片段代码:
<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);
},
如果 sap.m.Popover 为真,请尝试设置 'modal' 属性。这可以防止它在您单击弹出框区域之外时关闭。