Karena jaringan kendo saya memerlukan terlalu banyak waktu untuk memuat jika data lebih dari 15.000 catatan, saya berpikir untuk menerapkan paging sisi server.
Saya tidak menggunakan kerangka entitas. Saya menggunakan pembungkus Kendo MVC dan prosedur Tersimpan SQL Server untuk menarik dan menampilkan data.
Saya telah meneruskan dua parameter ke Prosedur sebagai @Skip dan @Take.
Berikut ini kode saya:
Lihat
@(Html.Kendo().Grid(Model)
.Name("expandedView_" + Model.ToArray()[0].WidgetId.ToString())
.Columns(columns =>
{
columns.Bound(p => p.FacilityNameAbbreviation).Title(@Resource.FacilityName).Width("15%");
columns.Bound(p => p.DeviceAbbreviation).Title(@Resource.DeviceName).Width("10%");
columns.Bound(p => p.EventType).Title(@Resource.EventType).Width("40%");
columns.Bound(p => p.SubEventCode).Title(@Resource.SubAlarmCode).Width("10%").HtmlAttributes(new { style = "text-align:right" });
columns.Bound(p => p.FacilityEventTime).Title(@Resource.EventTime).Width("15%");
columns.Bound(p => p.EventStatus).Title(@Resource.Status).Width("10%");
columns.Bound(p => p.PriorityColor).Hidden(true);
})
.Scrollable()
.Pageable()
.DataSource(dt => dt
.Ajax()
.PageSize(100)
.Read(read => read.Action("PageWiseData", "DeviceEvent", new { WidgetId = Model.ToArray()[0].WidgetId, FacilityIds = ViewData["Facids"].ToString() }))
.ServerOperation(true)
.Model(model => model.Id(p => p.FacilityEventTime)))
)
Tindakan :
[HandleError(ExceptionType = typeof(Exception), View = "ApplicationError")]
public PartialViewResult DeviceEventExpandedView(int WidgetId, string FacilityIds)
{
var userDetail = sessionContext.UserContextBag;
int Skip = 0; // for first page data static value is passed
int Take = 100;
IList<AMI.WebRole.Models.Widgets.DeviceEventModel> result = _deviceEventClient.DeviceEventsForExpandedView(WidgetId, FacilityIds, TenantId, CustomerId, UserId, this.sessionContext.UserContextBag.CultureName, Skip, Take);
return PartialView(result);
}
public ActionResult PageWiseData(int WidgetId, string FacilityIds, [DataSourceRequest]DataSourceRequest request)
{
IList<AMI.WebRole.Models.Widgets.DeviceEventModel> Totalresult = null;
var Skip = (request.Page - 1) * request.PageSize;
var Take = request.PageSize;
Totalresult = _deviceEventClient.DeviceEventsForExpandedView(WidgetId, FacilityIds, TenantId, CustomerId, UserId, this.sessionContext.UserContextBag.CultureName, Skip, Take);
return Json(new
{
Data = Totalresult,
Total = 1500
});
}
MASALAH :
Untuk pertama kalinya "DeviceEventExpandedView" dipanggil, tampilan dimuat dan data berhasil ditampilkan, TAPI NOMOR HALAMAN HANYA MUNCUL 1 untuk pertama kalinya. Di grid saya, filter juga ada, setelah saya mengklik filter, metode "PageWiseData" dipanggil lagi, ia menarik 100 catatan dan kali ini menunjukkan nomor halaman untuk halaman berikutnya. Sesuai pemahaman saya untuk kedua kalinya, data yang dikembalikan dalam JSON yang juga mencakup Total=1500, tetapi dalam kasus pertama ketika tampilan sebagian dimuat, jumlah "Total" ini tidak disetel.
Saya tidak dapat menampilkan nomor halaman (dalam kasus saya harus maksimal 15) ketika tampilan sebagian dimuat dan kisi diikat untuk pertama kalinya
ADA YANG BISA MEMBANTU DI SINI, CARA MELEWATI HITUNGAN UNTUK PERTAMA KALI ATAU CARA MENGIKAT GRID DENGAN METODE "PageWiseData" UNTUK PERTAMA KALI....ATAU cara lain untuk melakukan ini...tolong bantu!!
Action
Anda salah, biarkan Kendo memfilter hasil Anda seperti yang dijelaskan oleh @hutchonoid. - person Rosdi Kasim   schedule 10.07.2015.ToDataSourceResult(request)
akan menerapkan filter dan penomoran halamannya sendiri ke kueri, jadi hanya rekaman yang diperlukan yang akan diambil. - person Rosdi Kasim   schedule 10.07.2015