正如我的劍道電網花費太多時間,如果數據是超過15000個 記錄加載,我想實現服務器端分頁的。服務器端分頁不工作的第一頁劍道電網MVC包裝
我沒有使用實體框架。我正在使用Kendo MVC包裝器和SQL服務器存儲過程來提取和顯示數據。
我已將@Skip和@Take的兩個參數傳遞給Procedure。
以下是我的代碼:
查看
@(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)))
)
操作:
[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
});
}
問題:
首次「DeviceEventExpandedView」被調用時,視圖被加載 和成功顯示的數據,但是頁號出現AS 1 ONLY首次。在我的網格中,過濾器也在那裏,一旦我點擊過濾器,方法「PageWiseData」被再次調用它拉100 記錄,這次是顯示後續頁面的頁碼。由於 我第二次理解,返回的數據是JSON,其中 也包含Total = 1500,但在第一種情況下,當部分視圖是 加載時,此計數「Total」未設置。
我無法顯示的頁面數(應該是高達15在我的情況)時,局部視圖加載和網格是綁定的第 時間
任何一個可以幫助在這裏,怎麼第一次通過計數或如何 第一次使用方法「PageWiseData」綁定網格....或任何 其他方式來做到這一點...請幫助!
你'Action'是做錯了,讓劍道按照@hutchonoid的說明過濾結果。 –
我想,爲此我必須先從數據庫中提取所有記錄,我是對嗎? – devgal
不,''.ToDataSourceResult(request)'將自己的過濾器和分頁應用到查詢中,因此只會檢索所需的記錄。 –