предложение реализовать группировку, фильтрацию и сортировку моей таблицы в sapui5

Я пытаюсь реализовать группировку, фильтрацию и сортировку в таблице, с которой я привожу некоторые данные.

Мне удалось выполнить группировку и сортировку без проблем, но я не смог правильно отфильтровать.

Это будет код фрагмента, который я использовал для группировки, фильтрации и сортировки:

<core:FragmentDefinition xmlns:core="sap.ui.core" xmlns="sap.m">
  <ViewSettingsDialog confirm="onConfirm">
    <sortItems>
      <ViewSettingsItem selected="true" key="Xao" text="Tipo"/>
      <ViewSettingsItem key="Xoccupant" text="Ocupante"/>
    </sortItems>
    <groupItems>
      <ViewSettingsItem key="Xao" text="Tipo"/>
    </groupItems>
    <filterItems>
      <ViewSettingsFilterItem key="Xao" text="Tipo" multiSelect="false" items="{/d/results/Xao}">
        <items>
        <ViewSettingsItem key="{Xao}" text="{Xao}"/>    
        </items>
      </ViewSettingsFilterItem>
    </filterItems>
  </ViewSettingsDialog>
</core:FragmentDefinition>

Со стороны контроллера это будет занимаемый им код:

onPress: function () {
this._Dialog = sap.ui.xmlfragment("LogonPage.LogonPage.fragments.Dialog", this);
this._Dialog.open();
},

onClose: function () {
this._Dialog.close();
},

onTableSettings: function (oEvent) {
// Abra el cuadro de diálogo Configuración de tabla 
this._oDialog = sap.ui.xmlfragment("LogonPage.LogonPage.fragments.SettingsDialog", this);
this._oDialog.open();
},

onConfirm: function (oEvent) {
 var oView = this.getView();
 var oTable = oView.byId("table0");
 var mParams = oEvent.getParameters();
 var oBinding = oTable.getBinding("items");
 // apply grouping 
 var aSorters = [];
 if (mParams.groupItem) {
 var sPath = mParams.groupItem.getKey();
 var bDescending = mParams.groupDescending;
 var vGroup = function (oContext) {
 var name = oContext.getProperty("Xao");
  return {
  key: name,
  text: name
 }; 
};
aSorters.push(new sap.ui.model.Sorter(sPath, bDescending, vGroup));
}
// apply sorter 
 var sPath = mParams.sortItem.getKey();
 var bDescending = mParams.sortDescending;
 aSorters.push(new sap.ui.model.Sorter(sPath, bDescending));
 oBinding.sort(aSorters);

// apply filters 
 var aFilters = [];
 var sQuery = oEvent.getParameter("query");
 if (sQuery) {
 aFilters.push(new Filter("Xao", FilterOperator.Contains, sQuery));
 }
 oBinding.filter(aFilters);
},

И это представление моей таблицы, я хочу отфильтровать все, что содержит раздел Xao моей таблицы.

<Table inset="false" items="{/d/results}" id="table0" width="auto">
 <items>
  <ColumnListItem type="Active" id="item1">
   <cells>
   <Text text="{Xao}" id="text7"/>
   <Text text="{Xoccupant}" id="text8"/>
   <Text text="{ path: 'Validfrom', type: 'sap.ui.model.type.Date', formatOptions: 
    { source: { 
      pattern: 'yyyyMMdd' }, 
      pattern: 'dd/MM/yyyy' } }" id="text9"/>
   <Text text="{ path: 'Validto', type: 'sap.ui.model.type.Date', formatOptions: 
   { source: { 
     pattern: 'yyyyMMdd' }, pattern: 'dd/MM/yyyy' } }" id="text10"/>

  </cells>
 </ColumnListItem>
</items>

<columns>
 <Column id="column0">
  <header>
   <Label text="Tipo" id="label0"/>
  </header>
 </Column>
 <Column id="column1">
  <header>
   <Label text="Ocupante" id="label1"/>
  </header>
 </Column>
 <Column id="column2">
  <header>
   <Label text="Fecha de Apartado" id="label2"/>
  </header>
 </Column>
 <Column id="column3">
  <header>
   <Label text="Fecha de Finalización" id="label3"/>
  </header>
 </Column>
</columns>
</Table>

А вот код представления, где я включаю группировку, фильтрацию и сортировку своей таблицы

<headerToolbar>
 <Toolbar id="toolbar3">
  <Title text="Puestos de Trabajo"/>
 <ToolbarSpacer/>
 <Button press="onTableSettings" icon="sap-icon://drop-down-list" tooltip="Settings"/>
 </Toolbar>
</headerToolbar>

Любые идеи или предложения по правильной фильтрации моей таблицы?


person EdsonBravo93    schedule 23.12.2019    source источник


Ответы (1)


Проверьте свою функцию onConfirm в контроллере — код для фильтрации больше похож на код для поля поиска. Вы должны обработать фильтры, поступающие от события: https://sapui5.hana.ondemand.com/#/api/sap.m.ViewSettingsDialog%23events/confirm

Для вас это будет содержать только фильтры для вашего поля Xao, но я рекомендую установить точку останова в функции и проанализировать структуру oEvent.getParameters().

person pguddi    schedule 27.12.2019