KendoNET.DynamicLinq implémente la pagination, le filtrage, le tri, le regroupement et l'agrégation du serveur dans l'interface utilisateur de Kendo via Dynamic Linq pour l'application .Net Core (1.x ~ 3.x).
Aucun
Vous devez ajouter ObjectToInferredTypesConverter personnalisé à votre JsonSerializerOptions puisque System.Text.Json n'a pas désérialisé le type déduit en propriétés d'objet maintenant, voir l'exemple de code et la référence.
Ajoutez le package KendoNET.DynamicLinq NuGet à votre projet.
Configurez votre Kendo DataSource pour envoyer ses options au format JSON.
paramètreMap : fonction (options, type) {return JSON.stringify (options);} Configurez le schema du dataSource.
schéma : {données : "Données", total : "Total", agrégats : "Agrégats", groupes : "Groupes", erreurs : "Erreurs"}Le code complété comme ci-dessous.
..... Autre code de grille de kendo .....dataSource : {schema :{data : "Data", total : "Total", agrégats : "Agrégats", groupes : "Groupes", erreurs : "Erreurs", ...},transport : {read : {url : 'votre URL de lecture',dataType : 'json',contentType : 'application/json; charset=utf-8',type : 'POST'},create : {url : 'votre URL de création',dataType : "json",contentType : 'application/json; charset=utf-8',type : 'POST'},parameterMap : fonction (données, opération) {return JSON.stringify(data);}},erreur : function(e) {console.log(e.errors); // Vos informations d'erreure.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... Autre code de grille de kendo.....Importez l'espace de noms KendoNET.DynamicLinq.
Utilisez la méthode d'extension ToDataSourceResult pour appliquer la pagination, le tri, le filtrage, le regroupement et l'agrégation.
en utilisant KendoNET.DynamicLinq[WebMethod]public static DataSourceResult Products (int take, int skip, IEnumerable<Sort> sort, Filter filter, IEnumerable<Aggregator> agrégats, IEnumerable<Group> groups){using (var northwind = new Northwind()) {return northwind.Products .OrderBy(p => p.ProductID) // EF nécessite une commande pour la pagination .Select(p => new ProductViewModel // Utilisez un modèle de vue pour éviter de sérialiser les propriétés internes d'Entity Framework en tant que JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Discontinued = p.Discontinued }) .ToDataSourceResult(prendre, ignorer, trier, filtrer, agréger, groupes);}}ou à partir de la demande de Kendo UI
using KendoNET.DynamicLinq[HttpPost]public IActionResult Products([FromBody] DataSourceRequest requestModel){using (var northwind = new Northwind()){return northwind.Products .Select(p => new ProductViewModel // Utiliser un modèle de vue pour éviter la sérialisation Propriétés internes d'Entity Framework au format JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Discontinued = p.Discontinued }) .ToDataSourceResult(requestModel.Take, requestModel.Skip, requestModel.Sort, requestModel.Filter, requestModel.Aggregate, requestModel.Group);}} Lorsque les options filtrables côté serveur sont activées et appliquent une requête avec une condition de filtre contenant une colonne de type DateTime , EntityFramework Core lève une exception System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string . L'erreur est provoquée par un problème connu dans certaines anciennes versions d'EntityFramework Core. La solution de contournement consiste à ajouter une valeur datetime à la colonne associée dans DbContext. par exemple
classe publique MyContext : DbContext{protected override void OnModelCreating(ModelBuilder modelBuilder){..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}Ouvrir la console de ligne de commande
Basculez vers le répertoire racine du projet (srcKendoNET.DynamicLinq).
Exécutez "restauration dotnet"
Exécutez "dotnet pack --configuration Release"
Ajoutez <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" /> pour empaqueter les métadonnées de nupkg pour afficher l'URL du référentiel sur Nuget
KendoNET.DynamicLinq est une référence à Kendo.DynamicLinq d'Ali Sarkis.
Les liens suivants sont des documents en ligne de Kendo UI (liés à ce package) auxquels vous pouvez vous référer.
Grille de l'interface utilisateur du Kendo
Source de données Kendo
Plus de configuration de l'interface utilisateur de Kendo peut se référer ici