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