J'ai trouvé des messages avec des titres similaires, mais je ne parviens toujours pas à résoudre mon problème. Je fais vraiment quelque chose de mal.
Dans la configuration de la grille Kendo, certaines fonctions prennent le contexte (grille) et lisent la ligne sélectionnée:
change: function (e) {
refresh(this);
}
C'est ainsi que j'ai configuré l'événement "change".
Dans la fonction "rafraîchir (grille)", je reçois la ligne sélectionnée de la manière suivante:
refresh: function (grid) {
var selectedRows = grid.select();
var selectedRow = grid.dataItem(selectedRows[0]);
var id = selectedRow.Id;
}
Cette approche fonctionne parfaitement lorsque je sélectionne manuellement la ligne de la grille. Mais lorsque je sélectionne par programme la variable "selectedRow" est nulle.
Je sélectionne par programme de la manière suivante:
var grid = $("#grid").data("kendoGrid");
var rows = grid.dataSource.data();
var row = rows[rows.length - 1];
grid.select(row);
Comme je le regrette ci-dessus, dans la précédente méthode de "rafraîchissement (grille)", la variable selectedRow sera nulle.
Quelqu'un a-t-il une opinion à ce sujet? Pourquoi est-ce arrivé?
Merci
Selon la documentation de la grille, la méthode "select" accepte le paramètre "string" (sélecteur) ou l'élément jQuery. C'est pourquoi, si vous devez sélectionner correctement la ligne, vous devez modifier votre code actuel comme suit:
var grid = $("#grid").data("kendoGrid");
//if you are using the "pageable" option of the grid
//you should get the visible rows using the .view() method
var models = grid.dataSource.data();
var model = models[models.length - 1];
var lastRowUid = model.uid;
//find the target row element:
var row = grid.table.find("[data-uid=" + lastRowUid + "]");
grid.select(row);