2017-06-28 5 views
0

J'ai une application qui a une grille de kendo.Comment appliquer des filtres à une source de données de grille de kendo au démarrage

Je peux filtrer la grille en utilisant plusieurs listes déroulantes hors de la grille. Lorsque je clique sur Rechercher, j'ajoute des filtres à la liste de filtres de sources de données. Par exemple,

var dataSource = $("#grid").data("kendoGrid").dataSource; 
      var dataSourceFilterQuery = new Array(); 

    if ($("#something").data("kendoDropDownList").value() !== null) { 
        dataSourceFilterQuery.push({ field: "something", operator: "IsGreaterThanOrEqualTo", value: ($("#something").data("kendoDropDownList").value()) }); 
      } 

      dataSource.filter(dataSourceFilterQuery);  

Puis j'obtiens les résultats que je veux. Ça marche. J'ai alors la possibilité d'enregistrer les valeurs de toutes les listes déroulantes comme un seul filtre dans localStorage.

const filtersObject = { 
       Something: whatever.value(), 
       ... 
      }; 

      this.storage.setItem("Filter", JSON.stringify(filtersObject)); 

Lorsque je redémarre l'application, les DropDownLists sont peuplés avec tout ce qui est en localStorage

const filter = JSON.parse(localStorage.getItem("Filter")); 

       $("#something").data("kendoDropDownList").value(filters.whatever || "");     
      } 

La chose est, je voulais ajouter ces filtres, si elles existent sur localStorage, à la source de données lorsque l'application démarre pour que l'utilisateur puisse voir les résultats du filtre qu'il a enregistré au démarrage des applications et ne pas avoir à cliquer à nouveau sur la recherche.

Alors, ce que je veux est de faire appliquer cette

var dataSource = $("#grid").data("kendoGrid").dataSource; 
      var dataSourceFilterQuery = new Array(); 

    if ($("#something").data("kendoDropDownList").value() !== null) { 
        dataSourceFilterQuery.push({ field: "something", operator: "IsGreaterThanOrEqualTo", value: ($("#something").data("kendoDropDownList").value()) }); 
      } 

      dataSource.filter(dataSourceFilterQuery); 

avant la grille est affichée.

Est-ce possible?

À l'avance.

Répondre