J'ai plusieurs grilles MVC de kendo avec un événement de tri de sorte que si un tri est appliqué sur une grille, il est également appliqué à toutes les autres grilles. Cela a semblé fonctionner correctement jusqu'à ce que je devais remplacer la fonction de tri et trier sur 2 colonnes.Événement de tri ne fonctionnant pas sur la grille qui a déclenché l'événement
Le code ci-dessous va maintenant trier toutes les autres grilles de 2 colonnes mais pas la grille qui a déclenché l'événement lorsque la colonne a été cliquée pour trier.
Existe-t-il un moyen de résoudre ce problème afin que la grille qui est cliquée se trie également correctement?
Razer:
for (int i = 0; i < grids.Count; i++)
{
@(Html.Kendo().Grid(dataXYZ)
.Name($"grid{i}")
.Deferred()
.Columns(columns =>
{
// Columns
})
.Sortable(sortable =>
{
sortable.SortMode(GridSortMode.SingleColumn);
})
.Events(events => events
.Sort("onSorting")
.DataBound("dataBound")
)
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(50)
.ServerOperation(false)
)
)
}
javascript:
<script>
function onSorting(arg) {
$("div[data-role=grid]").each(function() {
var grid = $(this).data("kendoGrid");
var dsSort = [];
dsSort.push({ field: "SortColumnHelper", dir: "desc" });
dsSort.push({ field: arg.sort.field, dir: arg.sort.dir });
grid.dataSource.sort(dsSort);
});
}
</script>
Edit: Je pense que ce qui se passe est que l'événement de tri est appelée avant que la grille est triée, de sorte que le code fonctionne, mais alors le genre réel a lieu après l'exécution du code d'événement.
Tu ne peux pas ajouter votre événement de tri à la source de données plutôt grille? Je n'ai pas vérifié mais il va certainement résoudre votre problème si cela vous permet de –