KendoNET.DynamicLinq implementa paginación, filtrado, clasificación, agrupación y agregación del servidor a la interfaz de usuario de Kendo a través de Dynamic Linq para la aplicación .Net Core (1.x ~ 3.x).
Ninguno
Debe agregar ObjectToInferredTypesConverter
personalizado a su JsonSerializerOptions
ya que System.Text.Json
no deserializa el tipo inferido a las propiedades del objeto ahora; consulte el código de muestra y la referencia.
Agregue el paquete KendoNET.DynamicLinq NuGet a su proyecto.
Configure su Kendo DataSource para enviar sus opciones como JSON.
mapa de parámetros: función (opciones, tipo) {return JSON.stringify (opciones);}
Configure el schema
de la fuente de datos.
esquema: {datos: "Datos", total: "Total", agregados: "Agregados", grupos: "Grupos", errores: "Errores"}
El código completo como se muestra a continuación.
..... Otro código de cuadrícula de kendo .....dataSource: {esquema:{datos: "Datos", total: "Total", agregados: "Agregados", grupos: "Grupos", errores: "Errores", ...},transport: {read: {url: 'tu URL de lectura',dataType: 'json',contentType: 'application/json; charset=utf-8',tipo: 'POST'},create: {url: 'tu URL de creación',tipo de datos: "json",contentType: 'aplicación/json; charset=utf-8',tipo: 'POST'},parameterMap: función (datos, operación) {return JSON.stringify(data);}},error: función(e) {console.log(e.errors); // Su información de errore.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... Otro código de cuadrícula de kendo...
Importe el espacio de nombres KendoNET.DynamicLinq.
Utilice el método de extensión ToDataSourceResult
para aplicar paginación, clasificación, filtrado, agrupación y agregación.
usando KendoNET.DynamicLinq[WebMethod]Productos DataSourceResult estáticos públicos (int take, int skip, IEnumerable<Sort> sort, Filter filter, IEnumerable<Aggregator> agregados, IEnumerable<Group> groups){using (var northwind = new Northwind()) {return northwind.Products .OrderBy(p => p.ProductID) // EF requiere realizar pedidos para paging .Select(p => new ProductViewModel // Utilice un modelo de vista para evitar serializar las propiedades internas de Entity Framework como JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Discontinued = p.Discontinued }) .ToDataSourceResult(tomar, omitir, ordenar, filtrar, agregados, grupos);}}
o desde la solicitud de Kendo UI
usando KendoNET.DynamicLinq[HttpPost]public IActionResult Products([FromBody] DataSourceRequest requestModel){using (var northwind = new Northwind()){return northwind.Products .Select(p => new ProductViewModel // Use un modelo de vista para evitar la serialización propiedades internas de Entity Framework como 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);}}
Cuando las opciones filtrables del lado del servidor están habilitadas y se aplica una consulta con una condición de filtro que contiene una columna de tipo DateTime
, EntityFramework Core generará una excepción System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string
. El error se debe a un problema conocido en algunas versiones antiguas de EntityFramework Core. La solución alternativa es agregar un valor datetime
a la columna relacionada en DbContext. p.ej
clase pública MyContext: DbContext{anulación protegida void OnModelCreating(ModelBuilder modelBuilder){.........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
Abrir consola de línea de comando
Cambie al directorio raíz del proyecto (srcKendoNET.DynamicLinq).
Ejecute "restauración dotnet"
Ejecute "dotnet pack --configuration Release"
Agregue <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
al paquete de metadatos de nupkg para mostrar la URL del repositorio en Nuget
KendoNET.DynamicLinq es una referencia a Kendo.DynamicLinq de Ali Sarkis.
Los siguientes enlaces son documentos en línea de Kendo UI (relacionados con este paquete) que puede consultar.
Cuadrícula de interfaz de usuario de Kendo
Fuente de datos de Kendo
Puede consultar más configuraciones de Kendo UI aquí