KendoNET.DynamicLinq реализует серверную пейджинг, фильтрацию, сортировку, группировку и агрегацию в пользовательском интерфейсе Kendo через Dynamic Linq для приложения .Net Core (1.x ~ 3.x).
Никто
Вы должны добавить пользовательский ObjectToInferredTypesConverter
в свой JsonSerializerOptions
поскольку System.Text.Json
сейчас не десериализует выведенный тип в свойства объекта, см. пример кода и ссылку.
Добавьте пакет NuGet KendoNET.DynamicLinq в свой проект.
Настройте свой источник данных Kendo для отправки его параметров в формате JSON.
параметрMap: функция (опции, тип) {return JSON.stringify (опции);}
Настройте schema
источника данных.
схема: {данные: «Данные», итог: «Итого», агрегаты: «Агрегаты», группы: «Группы», ошибки: «Ошибки»}
Завершенный код, как показано ниже.
..... Другой код сетки кендо .....dataSource: {schema:{data: "Данные",total: "Total",агрегаты: "Агрегаты",группы: "Группы",ошибки: "Ошибки", ...},transport: {read: {url: 'ваш URL-адрес чтения',dataType: 'json',contentType: 'application/json; charset=utf-8',type: 'POST'},create: {url: 'ваш URL-адрес создания',dataType: "json",contentType: 'application/json; charset=utf-8',type: 'POST'},parameterMap: функция (данные, операция) {return JSON.stringify(data);}},error: function(e) {console.log(e.errors); // Информация о вашей ошибкеe.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... Другой код сетки кендо.....
Импортируйте пространство имен KendoNET.DynamicLinq.
Используйте метод расширения ToDataSourceResult
для применения разбивки по страницам, сортировки, фильтрации, группировки и агрегирования.
использование KendoNET.DynamicLinq[WebMethod]public static DataSourceResult Products (int take, intskip, сортировка IEnumerable<Sort>, фильтр фильтра, агрегаты IEnumerable<Aggregator>, группы IEnumerable<Group>) {с использованием (var Northwind = new Northwind()) {return Northwind.Products .OrderBy(p => p.ProductID) // EF требует порядок пейджинга .Select(p => new ProductViewModel // Используйте модель представления, чтобы избежать сериализации внутренних свойств Entity Framework как JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock , Снято с производства = p.Снято }) .ToDataSourceResult(взять, пропустить, сортировать, фильтровать, агрегировать, группы);}}
или из запроса пользовательского интерфейса Kendo
использование KendoNET.DynamicLinq[HttpPost]public IActionResult Products([FromBody] DataSourceRequest requestModel){using (var Northwind = new Northwind()){return Northwind.Products .Select(p => new ProductViewModel // Используйте модель представления, чтобы избежать сериализации внутренние свойства Entity Framework как JSON { ProductID = p.ProductID, ProductName = p.ProductName, UnitPrice = p.UnitPrice, UnitsInStock = p.UnitsInStock, Снято с производства = p.Снято с производства }) .ToDataSourceResult(requestModel.Take, requestModel.Skip, requestModel.Sort, requestModel.Filter, requestModel.Aggregate, requestModel.Group);}}
Когда параметры фильтрации на стороне сервера включены и применяется запрос с условием фильтра, содержащим столбец типа DateTime
, EntityFramework Core выдает исключение System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string
. Ошибка вызвана известной проблемой в некоторых старых версиях EntityFramework Core. Обходной путь — добавление значения datetime
в связанный столбец в DbContext. например
открытый класс MyContext: DbContext {защищенное переопределение void OnModelCreating(ModelBuilder modelBuilder) {..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
Открыть консоль командной строки
Перейдите в корневой каталог проекта (srcKendoNET.DynamicLinq).
Запустите «восстановление Dotnet».
Запустите «dotnet package --configuration Release».
Добавьте <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
в пакет метаданных nupkg, чтобы показать URL-адрес репозитория в Nuget.
KendoNET.DynamicLinq — это отсылка к Kendo.DynamicLinq Али Саркиса.
Следующие ссылки представляют собой онлайн-документацию Kendo UI (относящуюся к этому пакету), к которой вы можете обратиться.
Сетка пользовательского интерфейса Кендо
Источник данных Кендо
Дополнительную информацию о конфигурации пользовательского интерфейса Kendo можно найти здесь.