Peut-être que quelqu'un peut m'aider avec ce problème que j'ai ...

Ma grille d'interface utilisateur Kendo

$("#grid").kendoGrid({            
        dataSource: {
            data: self.positions(),
            pageSize: 50
        },
        filterable: true
    });  

Où self.positions () est un tableau observable knockout qui est rempli via ajax Get.

Mon problème maintenant est que lorsque j'actualise mon tableau de positions observables et que je relie les nouvelles données à la grille, les filtres de colonnes ne rafraîchissent pas correctement les données. Mes filtres affichent toujours les anciennes données de positions.

De l'aide???

Exemple de Kendo UI DOJO: http://dojo.telerik.com/oVOsi/31

2
Red Devil 20 avril 2017 à 21:35

3 réponses

Meilleure réponse

Appeler un query sur la source de données de la grille et effacer les filtres / réinitialiser tout autre attribut sur la source de données fonctionne pour moi (avec une vérification supplémentaire pour s'assurer que les filtres existent). Quelque chose comme:

var grid = $("#grid").data("kendoGrid");
var gridDataSource = grid.dataSource;
var filter = gridDataSource.filter();
if (filter) {
    gridDataSource.query({ filter: {}, pageSize: 10, page: 1 });
}

MODIFIER Maintenant que je comprends l'exigence exacte, vous pouvez reconstruire la grille à chaque clic sur le bouton (afin que les filtres de colonne soient reconstruits en fonction des données). J'ai rassemblé un exemple de dojo:

Exemple Dojo de reconstruction de grille

0
Sandman 21 avril 2017 à 09:21

Essayez d'effacer le filtre sur l'objet source de données:

$('#myOtherBtn').click(function(){
  var grid = $("#grid").getKendoGrid();    
  grid.dataSource.data(products2); 
  grid.dataSource.filter({});
  grid.refresh();
  grid.sync();
});
-1
ezanker 20 avril 2017 à 20:05

J'ai trouvé cette solution qui fonctionne bien:

    var grid = $("#grid").data("kendoGrid"); 
    grid.setDataSource(grid.dataSource);
    grid.dataSource.read();

L'astuce consiste à utiliser la méthode "setDataSource ()", cela réinitialisera tous les filtres.

http://dojo.telerik.com/oVOsi/103

3
Guillaume F. 29 sept. 2017 à 19:30