Как привязать значение пользовательского фильтра в смарт-таблице

В соответствии с требованием мне нужно связать пользовательское значение панели фильтров с интеллектуальной таблицей. Им не нужен умный фильтр. Поэтому я реализовал панель фильтров с кнопкой перехода. При нажатии кнопки «Перейти» мне нужно связать значение фильтра со смарт-таблицей.

Мой XML-код:

<smartTable:SmartTable id="smartTable_ResponsiveTable" demandPopin="false" tableType="Table" editable="false"
    entitySet="EntitySet" showVariantManagement="true" useVariantManagement="true" useTablePersonalisation="true"
    header="Request Pending My Action" showRowCount="true" useExportToExcel="true" enableAutoBinding="true" initialise="onInitialise"
    persistencyKey="SmartTablePKey" smartVariant="pageVariantId" showFullScreenButton="true"
    initiallyVisibleFields="Vin,Acind,Bukrs,Ekorg,Zzprimary,Zzscom1,Bunit,Lifnr,Name1,Status,Uname,Credat,Cretim"></smartTable:SmartTable>

контроллер:

onSearch: function() {
        var Vin = new Filter("Vin", "EQ", this.getView().byId("Vin").getValue());
        var Acind = new Filter("Acind", "EQ", this.getView().byId("Acind").getValue());
        var Bukrs = new Filter("Bukrs", "EQ", this.getView().byId("Bukrs").getValue());
        var Ekorg = new Filter("Ekorg", "EQ", this.getView().byId("Ekorg").getValue());
        var Zzprimary = new Filter("Zzprimary", "EQ", this.getView().byId("Zzprimary").getValue());
        var Zzscom1 = new Filter("Zzscom1", "EQ", this.getView().byId("Zzscom1").getValue());
        var Bunit = new Filter("Bunit", "EQ", this.getView().byId("Bunit").getValue());
        var Lifnr = new Filter("Lifnr", "EQ", this.getView().byId("Lifnr").getValue());
        var Name1 = new Filter("Name1", "EQ", this.getView().byId("Name1").getValue());
        var Status = new Filter("Status", "EQ", this.getView().byId("Status").getValue());
        var Uname = new Filter("Uname", "EQ", this.getView().byId("Uname").getValue());
        var Credat = new Filter("Credat", "EQ", this.getView().byId("Credat").getValue());
        var Cretim = new Filter("Cretim", "EQ", this.getView().byId("Cretim").getValue());
        var aFilters = [];
        aFilters.push(new Filter([Vin, Acind, Bukrs, Ekorg, Zzprimary, Zzscom1, Bunit, Lifnr, Name1, Status, Uname, Credat, Cretim], true));
        var oSmartTable = this.getView().byId("smartTable_ResponsiveTable");
        oSmartTable.getTable().bindRows("/EntitySet", null, null, aFilters);

    },

Пожалуйста, предоставьте код для достижения этого.


person Praveen Chan    schedule 09.04.2019    source источник


Ответы (1)


SmartTable работает иначе. Вот псевдокод.

onSearch: function(){
 <Get reference to SmartTable>
 <call rebindTable() API on SmartTable>
}

При определении SmartTable присоедините onBeforeRebindTable к событию beforeRebindTable.

onBeforeRebindTable : function(){
 <get all filters from your custom filterbar into aFilters as you did in your current code.>
 <oBindingParams.filters = aFilters>
}
person krisho    schedule 10.04.2019
comment
Привет, Кришо .. я пробовал ниже, и это не работает. Веди меня . - person Praveen Chan; 10.04.2019
comment
onSearch: function(oEvent) { var oSmartTable = this.getView().byId(smartTable_ResponsiveTable); // oSmartTable.getTable().bindRows(/TInboxOpenReqSet, null, null, aFilters); oSmartTable.rebindTable(); }, - person Praveen Chan; 10.04.2019
comment
AM получает следующую ошибку в консоли. ODataMetadata-dbg.js: 849 Uncaught TypeError: невозможно прочитать свойство «заменить» неопределенного - person Praveen Chan; 10.04.2019
comment
Не обращайте внимания на вышеизложенное: ниже я пробовал onBeforeRebindTable: function(oEvent) { var aFilters = []; var oBindingParams = oEvent.getParameter(bindingParams); aFilters.push(new Filter([Вин, Акинд, Букрс, Экорг, Ззпримары, Ззском1, Бунит, Лифнр, Имя1, Статус, Унаме, Кредат, Кретим], true)); oBindingParams.filters = фильтры; }, - person Praveen Chan; 10.04.2019
comment
Также получаю следующее в консоли. - person Praveen Chan; 10.04.2019
comment
2019-04-10 19:21:58.580929 Возникла следующая проблема: Ошибка HTTP-запроса400, Неверный запрос, {ошибка: {код: 005056A509B11EE1B9A8FEC11C21178E, сообщение: {язык: en, значение: Обнаружен недопустимый токен в позиции 209}, внутренняя ошибка: { transactionid:855B0C670F3700A0E005C877B9DD7F35,timestamp:20190410135158.4473340,Error_Resolution:{SAP_Transaction:Выполните транзакцию /IWFND/ERROR_LOG в хаб-системе SAP Gateway (псевдоним системы) и выполните поиск записей с указанной выше меткой времени для получения более подробной информации, SAP_Note: см. SAP - person Praveen Chan; 10.04.2019
comment
Спасибо ! Это помогло мне! - person NewGuyInJava; 07.09.2019