KendoNET.DynamicLinq는 .Net Core App(1.x ~ 3.x)용 Dynamic Linq를 통해 Kendo UI에 대한 서버 페이징, 필터링, 정렬, 그룹화 및 집계를 구현합니다.
없음
이제 System.Text.Json
이 유추된 유형을 개체 속성으로 역직렬화하지 않았으므로 JsonSerializerOptions
에 사용자 지정 ObjectToInferredTypesConverter
추가해야 합니다. 샘플 코드 및 참조를 확인하세요.
KendoNET.DynamicLinq NuGet 패키지를 프로젝트에 추가합니다.
옵션을 JSON으로 보내도록 Kendo DataSource를 구성하세요.
매개변수맵: 함수(옵션, 유형) {return JSON.stringify(옵션);}
dataSource의 schema
구성합니다.
스키마: {데이터: "데이터", 총: "총계", 집계: "집계", 그룹: "그룹", 오류: "오류"}
아래와 같이 완성된 코드입니다.
..... 기타 검도 그리드 코드 .....dataSource: {schema:{data: "Data",total: "Total",aggregates: "Aggregates",groups: "Groups",errors: "Errors", ...},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',유형: '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 제품 사용(int take, int skim, IEnumerable<Sort> 정렬, 필터 필터, IEnumerable<Aggregator> 집계, IEnumerable<Group> 그룹){using (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, Discontinued = p.Discontinued }) .ToDataSourceResult(수집, 건너뛰기, 정렬, 필터링, 집계, 그룹);}}
또는 검도 UI 요청에서
using 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
예외가 발생합니다. System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting date and/or time from character string
. 이 오류는 일부 이전 EntityFramework Core 버전의 알려진 문제로 인해 발생합니다. 해결 방법은 DbContext의 관련 열에 datetime
값을 추가하는 것입니다. 예를 들어
공용 클래스 MyContext: DbContext{보호된 재정의 void OnModelCreating(ModelBuilder modelBuilder){..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
명령줄 콘솔 열기
프로젝트 루트 디렉터리(srcKendoNET.DynamicLinq)로 전환합니다.
"dotnet 복원" 실행
"dotnet pack --configuration Release"를 실행하세요.
Nuget에 저장소 URL을 표시하려면 nupkg의 패키지 메타데이터에 <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
를 추가하세요.
KendoNET.DynamicLinq는 Ali Sarkis의 Kendo.DynamicLinq에 대한 참조입니다.
다음 링크는 Kendo UI 온라인 문서(본 패키지와 관련된)이며 참조하실 수 있습니다.
검도 UI 그리드
검도 데이터 소스
더 많은 Kendo UI 구성은 여기를 참조할 수 있습니다.