KendoNET.DynamicLinq ใช้การแบ่งหน้าเซิร์ฟเวอร์ การกรอง การเรียงลำดับ การจัดกลุ่ม และการรวมเข้ากับ Kendo UI ผ่าน Dynamic Linq สำหรับ .Net Core App(1.x ~ 3.x)
ไม่มี
คุณต้องเพิ่ม ObjectToInferredTypesConverter
แบบกำหนดเองไปยัง JsonSerializerOptions
ของคุณ เนื่องจาก System.Text.Json
ไม่ได้ทำการดีซีเรียลไลซ์ประเภทที่อนุมานไปยังคุณสมบัติของอ็อบเจ็กต์ในขณะนี้ ดูโค้ดตัวอย่างและการอ้างอิง
เพิ่มแพ็คเกจ KendoNET.DynamicLinq NuGet ให้กับโปรเจ็กต์ของคุณ
กำหนดค่า Kendo DataSource ของคุณเพื่อส่งตัวเลือกเป็น JSON
parameterMap: ฟังก์ชั่น (ตัวเลือก, ประเภท) {return JSON.stringify (ตัวเลือก);}
กำหนดค่า schema
ของแหล่งข้อมูล
สคีมา: {data: "Data",รวม: "Total",aggregates: "Aggregates",groups: "Groups",errors: "Errors"}
รหัสที่เสร็จสมบูรณ์ตามด้านล่าง
..... รหัสตารางเคนโด้อื่น ๆ .....dataSource: {schema:{data: "Data",total: "Total",aggregates: "Aggregates",groups: "Groups",errors: "Errors", ...},การขนส่ง: {อ่าน: {url: 'url การอ่านของคุณ',dataType: 'json',contentType: 'application/json; charset=utf-8',type: 'POST'},สร้าง: {url: 'your create url',dataType: "json",contentType: 'application/json; charset=utf-8',type: 'POST'},parameterMap: function (ข้อมูล, การดำเนินการ) {return JSON.stringify(data);}},ข้อผิดพลาด: function(e) {console.log(e.errors); // ข้อผิดพลาดของคุณ informatione.sender.cancelChanges();},pageSize: 20,serverPaging: true,serverFiltering: true,serverSorting: true,...}..... รหัสตารางเคนโด้อื่น ๆ .....
นำเข้าเนมสเปซ KendoNET.DynamicLinq
ใช้วิธีการขยาย ToDataSourceResult
เพื่อนำการแบ่งหน้า การเรียงลำดับ การกรอง การจัดกลุ่ม และการรวมไปใช้
การใช้ KendoNET.DynamicLinq[WebMethod]ผลิตภัณฑ์ DataSourceResult สาธารณะแบบคงที่ (int take, int ข้าม, การเรียงลำดับ 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, Discontinued = p.Discontinued }) .ToDataSourceResult(รับ, ข้าม, เรียงลำดับ, กรอง, รวม, กลุ่ม);}}
หรือจากคำขอ Kendo UI
การใช้ 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, Discontinued = p.Discontinued }) .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{การแทนที่ที่ได้รับการปกป้องถือเป็นโมฆะ OnModelCreating(ModelBuilder modelBuilder){..........modelBuilder.Entity<Member>().Property(x => x.UpdateTime).HasColumnType("datetime") ;..........}}
เปิดคอนโซลบรรทัดคำสั่ง
สลับไปยังไดเรกทอรีรากของโครงการ (srcKendoNET.DynamicLinq)
เรียกใช้ "การคืนค่า dotnet"
เรียกใช้ "dotnet pack --configuration release"
เพิ่ม <repository type="git" url="https://github.com/linmasaki/KendoNET.DynamicLinq.git" />
ลงในแพ็คเกจข้อมูลเมตาของ nupkg เพื่อแสดง URL ของที่เก็บที่ Nuget
KendoNET.DynamicLinq เป็นการอ้างอิงถึง Kendo.DynamicLinq ของ Ali Sarkis
ลิงก์ต่อไปนี้เป็นเอกสารออนไลน์ของ Kendo UI (เกี่ยวข้องกับแพ็คเกจนี้) และคุณสามารถอ้างอิงได้
ตาราง UI ของเคนโด้
แหล่งข้อมูลเคนโด้
การกำหนดค่า Kendo UI เพิ่มเติมสามารถดูได้ที่นี่