KendoNET.DynamicLinq implementiert Server-Paging, Filterung, Sortierung, Gruppierung und Aggregation für die Kendo-Benutzeroberfläche über Dynamic Linq für .Net Core App (1.x ~ 3.x).
Keiner
Sie müssen den benutzerdefinierten ObjectToInferredTypesConverter
zu Ihren JsonSerializerOptions
hinzufügen, da System.Text.Json
den abgeleiteten Typ jetzt nicht in Objekteigenschaften deserialisiert hat. Sehen Sie sich den Beispielcode und die Referenz an.
Fügen Sie das KendoNET.DynamicLinq NuGet-Paket zu Ihrem Projekt hinzu.
Konfigurieren Sie Ihre Kendo DataSource so, dass ihre Optionen als JSON gesendet werden.
parameterMap: function(options, type) {return JSON.stringify(options);}
Konfigurieren Sie das schema
der dataSource.
Schema: {data: „Data“,total: „Total“,aggregates: „Aggregates“,groups: „Groups“,errors: „Errors“}
Der fertige Code wie unten.
..... Anderer Kendo-Grid-Code .....dataSource: {schema:{data: "Data",total: "Total",aggregates: "Aggregates",groups: "Groups",errors: "Errors", ...},transport: {read: {url: 'Ihre Lese-URL',dataType: 'json',contentType: 'application/json; charset=utf-8',type: 'POST'},create: {url: 'your create url',dataType: "json",contentType: 'application/json; charset=utf-8',type: 'POST'},parameterMap: function (data, operation) {return JSON.stringify(data);}},error: function(e) {console.log(e.errors); // Ihre Fehlerinformationene.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... Anderer Kendo-Grid-Code .....
Importieren Sie den KendoNET.DynamicLinq-Namespace.
Verwenden Sie die Erweiterungsmethode ToDataSourceResult
um Paging, Sortierung, Filterung, Gruppierung und Aggregation anzuwenden.
using KendoNET.DynamicLinq[WebMethod]public static DataSourceResult Products(int take, int skip, IEnumerable<Sort> sort, Filter filter, IEnumerable<Aggregator>aggregats, IEnumerable<Group> groups){using (var Northwind = new Northwind()) {return Northwind.Products .OrderBy(p => p.ProductID) // EF erfordert Bestellung für Paging .Select(p => neues ProductViewModel // Verwenden Sie ein Ansichtsmodell, um die Serialisierung interner Entity Framework-Eigenschaften als JSON zu vermeiden { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Discontinued = p.Discontinued } ) .ToDataSourceResult(nehmen, überspringen, sortieren, filtern, Aggregate, Gruppen);}}
oder aus einer Kendo-UI-Anfrage
using KendoNET.DynamicLinq[HttpPost]public IActionResult Products([FromBody] DataSourceRequest requestModel){using (var Northwind = new Northwind()){return Northwind.Products .Select(p => new ProductViewModel // Verwenden Sie ein Ansichtsmodell, um Serialisierung zu vermeiden interne Entity Framework-Eigenschaften als 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);}}
Wenn serverseitige filterbare Optionen aktiviert sind und eine Abfrage mit Filterbedingung anwenden, die eine Spalte vom Typ DateTime
enthält, würde EntityFramework Core eine Ausnahme System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string
. Der Fehler wird durch ein bekanntes Problem in einigen alten EntityFramework Core-Versionen verursacht. Die Problemumgehung besteht darin, der zugehörigen Spalte in DbContext datetime
Wert hinzuzufügen. z.B
öffentliche Klasse MyContext: DbContext{protected override void OnModelCreating(ModelBuilder modelBuilder){..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
Öffnen Sie die Befehlszeilenkonsole
Wechseln Sie zum Projektstammverzeichnis (srcKendoNET.DynamicLinq).
Führen Sie „Dotnet Restore“ aus.
Führen Sie „dotnet pack --configuration Release“ aus.
Fügen Sie <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
zu den Paketmetadaten von nupkg hinzu, um die Repository-URL bei Nuget anzuzeigen
KendoNET.DynamicLinq ist eine Referenz auf Kendo.DynamicLinq von Ali Sarkis.
Bei den folgenden Links handelt es sich um Kendo UI-Onlinedokumente (im Zusammenhang mit diesem Paket), auf die Sie verweisen können.
Kendo-UI-Raster
Kendo-Datenquelle
Weitere Kendo-UI-Konfigurationen finden Sie hier