我在我的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