我在我的ASP .NET MVC應用程序中使用Infragistics jQuery grid。我的數據源是引用SQL數據庫的ADO .NET實體模型。下面是我的控制器代碼來設置網格,並提供數據源爲它拉離:ASP.NET MVC中的jQuery網格綁定如此緩慢
public ActionResult Index()
{
var model = new GridModel();
model.DataSourceUrl = Url.Action("GetInstrumentListData");
this.InitializeGridOptions(model);
return View(model);
}
public JsonResult GetInstrumentListData()
{
var model = new GridModel();
this.InitializeGridOptions(model);
model.DataSource = _db.InstrumentLists.OrderBy(x => x.Tag).AsQueryable<InstrumentList>();
return model.GetData();
}
private void InitializeGridOptions(GridModel model)
{
Code to create columns...
model.DefaultColumnWidth = "100px";
model.Width = "100%";
model.Height = "700px";
model.Features.Add(new GridFiltering());
var sort = new GridSorting();
sort.Mode = SortingMode.Multiple;
model.Features.Add(sort);
var paging = new GridPaging();
paging.PageSize = 30;
model.Features.Add(paging);
var selection = new GridSelection();
selection.Mode = SelectionMode.Row;
selection.MultipleSelection = true;
model.Features.Add(selection);
}
網格正在採取的年齡顯示(25-40秒),所以我做了一些調查和它的model.GetData()
致電GetInstrumentListData()
一直佔用。根據Intellisense,這個函數首先執行數據綁定並生成JsonResult對象。
我想也許因爲我試圖顯示總共1000條記錄(即使分頁已啓用,只顯示30個視圖),可能需要一段時間才能將這些記錄轉換爲JSON,所以我減少了記錄數量爲10(從JSON數據的1.2mb到12.5kb)。時間沒有區別。
這裏是來自Firebug的請求追蹤。
關於發生了什麼的任何想法?
編輯: @allentranks的回答和@AlastairPitts評論讓我意識到,它其實是我從我得到的數據源。源不是一個表,而是一個視圖,它是由我的DBA從一大堆瘋狂的連接創建的。事實證明,運行查詢需要13+秒,所以不用擔心其加載時間過長。謝謝你的幫助。
InstrumentList表中有多少行? 您在標籤列上有索引嗎? 查詢表明您正在從該表中提取所有行 – BlackTigerX