2016-04-19 10 views
0

Es gibt eine Standardfilterung, die von einem ui-Raster bereitgestellt wird, das mit enableFiltering aktiviert wird: false in gridOptions. Anstatt diese Standardfilterung zu verwenden, benutzte ich den Text, der im Filterfeld für mehrere Spalten eingegeben wurde, sendete die Filter an den Server und holte die Daten zurück. Ich habe versucht, Filteroptions verwenden, aber $ Umfang. $ Uhr ('Filteroptions', function (newVal, oldVal) {serverseitige Filterung mit UI-Raster

 if (newVal !== oldVal) { 
      $scope.getPagedDataAsync($scope.gridOptions.$gridScope.filterText); 
     } 
    }, true); 

wird nie aufgerufen. Jede Hilfe ist willkommen.

Antwort

0

Es gibt ein paar verschiedene Möglichkeiten . Sie können dies tun, in der onRegisterApi in den Rasteroptionen können Sie dies tun.

onRegisterApi: function(gridApi) { 

     gridApi.core.on.filterChanged($scope, 
       function(rowEntity, colDef, newValue, oldValue) { 
      // check which filter value changed and do something 
      // to get the value from a filter in column X you can do 
        gridApi.grid.columns[X].filters[0] 
       } 
     ); 
    } 

Sie auch ein Filterobjekt auf jeder Zelle gesetzt werden vielleicht die verschiedenen Spalten sammeln Sie wollen ein Filterobjekt filtern auf und setzen auf jeder dieser Zellen Wenn du dich änderst, würdest du al l Die Werte, die Sie benötigen, und Sie können eine Funktion in der "Bedingung" erstellen, die zum Ausführen des Filterns aufgerufen wird.

filter: { type: xxx, condition: $scope.myCustomFilter } 

    $scope.myCustomFilter = function(searchTerm, callValue) { 

     // check your various conditions here and return true/false 
    }