8
votes

Comment prévenir la grille de Kendo UI de se reproduire plusieurs fois lors de la mise à jour des images de vue

Lorsque vous vous liez à une grille d'interface utilisateur Kendo avec MVVM, DataNound va tirer une fois et tout va bien. Si vous devez mettre à jour ces données après le fait, chaque fois que vous modifiez une pièce de données sur n'importe quel point de vue de la vue (ou de la vue enfant), l'ensemble de la grille rétablique. Ainsi, si vous avez eu une cellule dans la grille qui est liée à un modèle et que vous devez modifier 2 ou 3 propriétés sur le point de vue de la source AJAX externe, DataNTound tirera 2 ou 3 fois pour chaque modèle modifié, causant la toute la zone visible pour rebondir. Comment pouvons-nous mettre à jour beaucoup de données à la fois et avoir un incendie de banquette une fois?


0 commentaires

3 Réponses :


1
votes

Je ne suis pas sûr de savoir s'il y a un moyen de dire temporairement à la grille d'arrêter d'écouter des événements, puis à la fin, re-synchroniser une fois. S'il y a, s'il vous plaît donner cette réponse ici! Sinon, ce que j'ai fait à la place, c'est que je n'ai pas suivi .set () pour chaque article. Au lieu de cela, j'ai mis à jour les données pour toutes les lignes en définissant les données directement sur la propriété. Ensuite, quand je suis arrivé à la dernière rangée, je me suis mis à jour, j'ai appelé .set () sur la dernière propriété qui devait être mise à jour. Cela entraînera un feu de données qu'une seule fois et la grille entière se rafraîchira de toutes les données modifiées. Si vous ne le faites pas de cette façon, plus les lignes sont affichées sur la page, plus il faut à traiter. (Cela pourrait prendre 20+ secondes avant que l'utilisateur puisse faire quelque chose à nouveau.)


1 commentaires

Une autre façon consiste simplement à ajouter de la propriété faux au dernier article et à modifier sa valeur à la fin. Ça va causer le même effet.



9
votes

Comment exactement vous reculer de la grille? Fondamentalement, si vous modifiez certains des modèles tels que ceci: xxx pré>

de cette façon, la grille sera effectivement liée deux fois à cause du MVVM. L'événement de changement est déclenché chaque fois que vous appelez ensemble. P>

Toutefois, si vous mettez à jour les valeurs telles que ceci: p> xxx pré>

La grille ne réagira pas au changement et Je ne reculera pas à nouveau les valeurs des modèles que vous pouvez forcer la grille à le faire à travers la méthode forte> Actualiser PR> P>

$('#gridName').data().kendoGrid.refresh()


1 commentaires

Cette approche fonctionne bien tant que vous savez quel (s) élément (s) que vous êtes lié. Si les données que vous mettez à jour est liée à plusieurs choses et il est mis à jour dans une sorte de bibliothèque où vous ne vous souciez pas des éléments d'écran, cela pourrait causer des problèmes. Si vous appelez SET () sur la propriété de tous les derniers éléments, vous ne vous souciez pas de ce qui est lié. Ils vont tous obtenir la mise à jour.



1
votes

On dirait que l'événement de base de données est l'endroit où vous pouvez empêcher une recette sur la grille.

Telerik Online Docs


0 commentaires