Comment puis-je actualiser la grille après que j'ai modifier le Kendo UI grille?
- Je modifier la grille à l'aide editable: "popup"
comme illustré sur Telerik de la page de démonstration. Après j'ai modifier la grille, je veux la grille pour se rafraîchir. La grille ont tout événement qui est appelé après que j'ai modifier la grille?
J'ai essayé d'utiliser l'événement databound. Dans ce cas je fais la source de données à lire, mais il me dit que c'est une boucle infinie à l'actualisation de la grille. J'ai essayé d'utiliser la saveChanges événement, mais il ne fonctionne pas.
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.ProductName);
columns.Bound(p => p.UnitPrice).Width(100);
columns.Bound(p => p.UnitsInStock).Width(100);
columns.Bound(p => p.Discontinued).Width(100);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(160);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Pageable()
.Sortable()
.Scrollable()
.Events(events => events.Change("saveChanges "))
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.ProductID))
.Create(update => update.Action("EditingPopup_Create", "Grid"))
.Read(read => read.Action("EditingPopup_Read", "Grid"))
.Update(update => update.Action("EditingPopup_Update", "Grid"))
.Destroy(update => update.Action("EditingPopup_Destroy", "Grid"))
))
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vous abonner à l'événement de Synchronisation de la grille de la source de données et d'appeler la méthode de lecture de sa source de données.
.Sync("sync_handler")
événement et quand l'utiliser?Ajouter des Événements dans la source de données
Javascript:
La accepté de réponse peut entraîner un comportement inattendu si vous utilisez la validation côté serveur. L'événement de synchronisation déclenche à chaque fois qu'une mise à jour est envoyée au serveur, indépendamment de savoir si la demande a été un succès, donc, si la requête déclenche côté serveur les erreurs de validation (ou toute autre erreur) la grille sera toujours mis à jour et des changements perdu. Toujours à la recherche de la ce, mais la meilleure solution que j'ai trouvé est d'utiliser la source de données
onRequestEnd()
événement manuellement et vérifier les erreurs.Par exemple:
Cela mettra à jour la Grille
si .page(1) ne fonctionne pas essayer .lire, mais il devrait
Utilisez cette option si vous voulez vous rafraîchir la grille.
Je suis d'accord c'est une très vieille question, mais malheureusement j'ai été victime de cette erreur de quelques jours en arrière. Mon scénario était
Enfin, je crois que j'ai une solution pour mon problème, je n'étais pas le réglage de la valeur de la clé primaire de mon dossier lorsque je l'insère dans la base de données et le retour de l'objet.
Ci-dessous est mon kendo code de réseau
Ci-dessous est le code de gestion d'erreur
Code Serveur
Espère que cela peut aider quelqu'un
Vous pouvez appeler une fonction sur vous bouton modifier, cliquez sur et à l'intérieur que vous pouvez actualiser la grille:
grid.dataSource.read()
dans saveShanges événements,mais il semble que la grille est l'actualisation d'abord, puis d'enregistrer les données.function onSaveChanges(e) { if (e.model.dirty) { e.preventDefault(); var grid = $("#MyGrid").data("kendoGrid"); grid.saveChanges(); grid.dataSource.read(); } }
Au cas où quelqu'un d'autre a besoin de savoir comment le faire. Vous pouvez inclure le "complète" de la fonction dans la création ainsi que la mise à jour des bits.
J'ai été à essayer de comprendre comment actualiser la grille après la création d'un nouvel élément. Scénario: Créer un élément dans le client, envoie la demande au serveur, recevoir de réponse et de mise à jour client. (Sinon, je ne me dérangerait pas d'essayer de comprendre pourquoi le réseau n'utilise pas l'article que je suis de retour dans le côté serveur create function)
Ce post mentionne le
requestEnd
événement, mais il n'est pas exposé au rasoir. Cet événement semble le feu après une demande est fini, c'est, après le processus de serveur de l'événement, de sorte que les nouveaux objets créés sur le client sera déjà envoyé au serveur pour traitement; ensuite, le client peut demander les informations les plus récentes sans perdre de données. Depuis la grille de la source de données d'objet non définie au chargement de la page, j'ai fini à l'aide de la.Change
événement à crochet de larequestEnd
événement.et puis le javascript:
Si il ya une meilleure façon, j'aimerais savoir.
Pour répondre à votre question, il y a d'autres événements que "créer": "lire", "mise à jour"
à l'aide de
AutoSync(true)
en ajax mvc kendo grille d'avoir des pop up modifier le mode causes de la pop à ne pas s'afficher du tout.Donc j'utilise ce
Le temps est de s'assurer que vous n'avez pas plus de tour l'opération crud.