KendoNET.DynamicLinq implementa paginação, filtragem, classificação, agrupamento e agregação de servidor para Kendo UI via Dynamic Linq para .Net Core App (1.x ~ 3.x).
Nenhum
Você deve adicionar ObjectToInferredTypesConverter
personalizado ao seu JsonSerializerOptions
pois System.Text.Json
não desserializou o tipo inferido para propriedades do objeto agora, consulte o código de exemplo e a referência.
Adicione o pacote KendoNET.DynamicLinq NuGet ao seu projeto.
Configure seu Kendo DataSource para enviar suas opções como JSON.
parâmetroMap: function(options, type) {return JSON.stringify(options);}
Configure o schema
do dataSource.
esquema: {dados: "Dados",total: "Total",agregados: "Agregados",grupos: "Grupos",erros: "Erros"}
O código completo como abaixo.
..... Outro código de grade kendo .....dataSource: {schema:{data: "Data",total: "Total",agregados: "Agregados",grupos: "Grupos",erros: "Erros", ...},transport: {read: {url: 'seu URL de leitura',dataType: 'json',contentType: 'application/json; charset=utf-8',type: 'POST'},create: {url: 'seu URL de criação',dataType: "json",contentType: 'application/json; charset=utf-8',type: 'POST'},parameterMap: function (dados, operação) {return JSON.stringify(data);}},error: function(e) {console.log(e.errors); // Suas informações de erroe.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... Outro código de grade de kendo .....
Importe o namespace KendoNET.DynamicLinq.
Use o método de extensão ToDataSourceResult
para aplicar paginação, classificação, filtragem, agrupamento e agregação.
usando KendoNET.DynamicLinq[WebMethod]public static DataSourceResult Products(int take, int skip, IEnumerable<Sort> sort, Filter filter, IEnumerable<Aggregator> agregados, IEnumerable<Group> groups){usando (var northwind = new Northwind()) {return northwind.Products .OrderBy(p => p.ProductID) // EF requer pedido para paginação .Select(p => new ProductViewModel // Use um modelo de visualização para evitar a serialização de propriedades internas do Entity Framework como JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Discontinued = p.Discontinued }) .ToDataSourceResult(pegar, pular, classificar, filtrar, agregar, agrupar);}}
ou da solicitação 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 um modelo de visualização para evitar serialização propriedades internas do Entity Framework como JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Descontinuado = p.Descontinuado }) .ToDataSourceResult(requestModel.Take, requestModel.Skip, requestModel.Sort, requestModel.Filter, requestModel.Aggregate, requestModel.Group);}}
Quando as opções filtráveis do lado do servidor são habilitadas e aplicam uma consulta com condição de filtro que contém a coluna do tipo DateTime
, o EntityFramework Core lançaria uma exceção System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string
. O erro é causado por um problema conhecido em algumas versões antigas do EntityFramework Core. A solução alternativa é adicionar valor datetime
à coluna relacionada em DbContext. por exemplo
classe pública MyContext: DbContext{substituição protegida void OnModelCreating(ModelBuilder modelBuilder){..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
Abra o console de linha de comando
Mude para o diretório raiz do projeto (srcKendoNET.DynamicLinq).
Execute "dotnet restore"
Execute "dotnet pack --configuration Release"
Adicione <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
aos metadados do pacote do nupkg para mostrar o URL do repositório no Nuget
KendoNET.DynamicLinq é uma referência ao Kendo.DynamicLinq de Ali Sarkis.
Os links a seguir são documentos online do Kendo UI (relacionados a este pacote) e você pode consultá-los.
Grade de IU do Kendo
Fonte de dados Kendo
Mais configurações da UI do Kendo podem ser consultadas aqui