185 votes

Rechargement/réactualisation de la grille Kendo

Comment recharger ou rafraîchir une grille Kendo Grid en utilisant Javascript ?

Il est souvent nécessaire de recharger ou de rafraîchir une grille après un certain temps ou après une action de l'utilisateur.

337voto

Jaimin Points 2787

Vous pouvez utiliser

$('#GridName').data('kendoGrid').dataSource.read(); <!--  first reload data source -->

$('#GridName').data('kendoGrid').refresh(); <!--  refresh current UI -->

21 votes

@zespri read demandera au serveur de recharger seulement recharger la source de données. Il n'y aura pas de changement dans l'interface utilisateur. refresh réaffichera les éléments de la grille à partir de la source de données actuelle. C'est pourquoi les deux sont nécessaires.

39 votes

Je ne pense pas que vous ayez besoin d'actualiser dans la dernière version de Kendo. Il semble que cela fonctionne très bien sans cela

0 votes

Cela dépend de ce que vous faites. Par exemple, la suppression d'un élément à l'aide d'une commande personnalisée, par opposition à la commande par défaut "Détruire", à partir d'une vue détaillée imbriquée, nécessite une actualisation manuelle.

64voto

Purna Pilla Points 11

Je ne rafraîchis jamais les données.

$('#GridName').data('kendoGrid').dataSource.read();

seul fonctionne pour moi tout le temps.

32voto

1576573987 Points 548
$('#GridName').data('kendoGrid').dataSource.read();
$('#GridName').data('kendoGrid').refresh();

0 votes

Merci, mais cela donne l'erreur "TypeError : $(...).data(...) is undefined". J'ai également regardé sur de nombreuses pages et essayé différentes variations de cette solution, mais j'obtiens toujours la même erreur. Une idée ?

0 votes

Si data('kendoGrid') renvoie null, il est fort probable que l'id soit erroné ou que vous n'ayez pas encore créé la grille. NB vous créez la grille avec $(..).kendoGrid() et y accédez plus tard avec $().data('kendoGrid')

32voto

drcyrus3d Points 405

Dans un projet récent, j'ai dû mettre à jour la grille Kendo UI en fonction de certains appels qui se produisaient sur des sélections de listes déroulantes. Voici ce que j'ai fini par utiliser :

$.ajax({
        url: '/api/....',
        data: { myIDSArray: javascriptArrayOfIDs },
        traditional: true,
        success: function(result) {
            searchResults = result;
        }
    }).done(function() {
        var dataSource = new kendo.data.DataSource({ data: searchResults });
        var grid = $('#myKendoGrid').data("kendoGrid");
        dataSource.read();
        grid.setDataSource(dataSource);
    });

J'espère que cela vous fera gagner du temps.

1 votes

Exactement ce que je cherchais grid.setDataSource(dataSource) ; pour les appels non distants, c'est ce qu'il faut utiliser. Je vous remercie de votre attention.

10voto

d.popov Points 1011

Si vous ne souhaitez pas avoir de référence à la grille dans le gestionnaire, vous pouvez utiliser ce code :

 $(".k-pager-refresh").trigger('click');

Cette opération permet d'actualiser la grille, s'il existe un bouton d'actualisation. Le bouton peut être activé comme suit :

[MVC GRID DECLARATION].Pageable(p=> p.Refresh(true))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X