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

КАК в соответствии с требованием, мне нужно связать пользовательское значение панели фильтра с умной таблицей.Им не нужен умный фильтр.Так что я реализовал панель фильтров с помощью кнопки «Перейти».Нажав кнопку «Перейти», мне нужно связать значение фильтра с умной таблицей.

Мой код 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);

    },

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

1 Ответ

0 голосов
/ 10 апреля 2019

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>
}
...