2015-09-16 24 views
7

Come faccio chiaro E aggiornamento tutti i miei (generale angolare e built-in UI -Grid) filtri su un clic del pulsante?angolare UI-Grid: Come cancellare tutto (generale angolare e built-in UI-Grid) Filtri colonna a fare clic sul pulsante

Background: ho costruita un'applicazione che utilizza l'interfaccia utente-Grid e sfrutta la built-in filtering functionality. Ha anche una ricerca tra le colonne scritta in angolare.

Current Battle Desidero essere in grado di cancellare e aggiornare i miei filtri con un solo clic. Finora sono stato in grado di implementarlo per la ricerca cross-column ma avere non averlo implementato con successo per i filtri di colonna incorporati (che ironicamente ho pensato sarebbe stata la parte più facile!).

ricerca effettuata su Problema:

1) Ricerca attraverso le esercitazioni UI-griglia ... fallire

2) Guardò il previsto UI-Grid API ... successo parziale! Sembra che ho trovato quello che sto cercando nella funzione "clearAllFilters" (here is the source code) ma non riesco a capire come implementarlo così sul passaggio 3 ...

3) googled come un matto per dimostrazioni di implementazione/esempi/help/suggerimenti/niente !? ... fail

4) ha chiesto aiuto su Stack Overflow :)

Grazie in anticipo.

+0

Qualsiasi possibilità di reimpostare le variabili a cui la griglia è associata nel controllore al valore predefinito? – Matt

+0

@Matt - Sì, quello che voglio fare è resettare le variabili a cui sono vincolati i filtri di colonna - ciò che suggerisci è in linea con come sto ripristinando la mia ricerca angolare a colonne incrociate ed è perfetto per questo, ma i filtri di griglia ui sono impostati e mantenuti all'interno del codice js della griglia di rete e questo è quello che sto avendo problemi ad accedere/resettare. – laurenOlga

risposta

15

Spiacente, non ho vedere la funzione clearAllFilters() della griglia ui. Quindi diventa più semplice. Si può fare questo:

$scope.clearFilters = function() { 
      $scope.myGridApi.grid.clearAllFilters(); 
     }; 
+0

Funziona per te? – laurenOlga

+0

Sì. potresti mostrarmi il tuo codice? – hic1086

+0

@Lauren: Funziona per te? – techprat

5

si può fare questo:

// ottenere l'API griglia

$scope.myGridOptions.onRegisterApi = function(gridApi) { 
    $scope.myGridApi=gridApi; 
} 

Bisogna legare questa funzione al pulsante chiaro:

 $scope.clearFilters = function() { 
      var columns = $scope.myGridApi.grid.columns; 
       for (var i = 0; i < columns.length; i++) { 
        if (columns[i].enableFiltering) { 
         columns[i].filters[0].term=''; 
        } 
       } 
      }; 
+0

Come si cattura l'evento? – JEuvin

+0

ma questo non cancellerà i valori selezionati sul filtro personalizzato. In ogni caso questo ottiene un upvote per la migliore risposta per questa domanda su questo thread. – techprat

+0

aggiunta di colonne [i] .filters [0] .listTerm = ''; risolto il mio problema di cancellare anche i filtri selezionati. – techprat

3

Si prega di provare questo:

$scope.gridApi.core.clearAllFilters(); 

Il $ scope.gridApi era dalla impostazione iniziale del mio elemento ui-grid

$scope.gridOptions = { 
     flatEntityAccess: true, 
     paginationPageSizes: [10, 25, 50, 75, 100], 
     paginationPageSize: 25, 
     enableFiltering: true, 
     enableColumnResizing: true, 
     enableGridMenu: true, 
     onRegisterApi: function (gridApi) { 
      $scope.gridApi = gridApi; 
     }, 
     columnDefs: [{ 
+1

$ scope.gridApi.core.clearAllFilters(); non funziona. –

+0

@ArepalliPraveenkumar: prova la soluzione qui sotto per hic. funziona :) – techprat

+0

@techprat Funziona quando si usa $ timeout –

0

Penso che questo sia in modo semplice (sostituendo semplicemente i dati della griglia con dati json originali/effettivi), è sufficiente creare e chiamare la funzione clearFilters in basso al clic di un pulsante.

$scope.clearFilters = function() { 
     $scope.yourGridOptions.data = $scope.originalData; 
    } 
Problemi correlati