我想打开剑道网格上的无休止滚动,在此框架中称为virtual scrolling
。
摘要:
1) I load the page => the Action Virtualization_Read is called (OK)
2) I scroll down the Grid till bottom => the Action Virtualization_Read is called anothter time in order to get more data (KO)
结果是,当我使用滚动条到达网格的底部时,不会再触发用于检索数据的Action方法。
这是我的网格,它显示了我的应用程序中生成的跟踪:
@(Html.Kendo().Grid<Credit.Entity.ServiceObjects.MsgBlock>(Model.ListadoTrazas)
.Name("grdTrazas")
.Columns(columns =>
{
columns.Bound(c => c.LogID).Filterable(true);
columns.Bound(c => c.Timestamp).Filterable(false);
columns.Bound(c => c.FormattedMessage).Filterable(false).Width("80%");
})
.Scrollable(s => s.Virtual(true))
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(100)
.ServerOperation(true)
.Read(read => read.Action("Virtualization_Read", "Logging"))
)
)
这是获取数据的MVC3 Action。只有在第一次加载页面时才会调用此Action:
public ActionResult Virtualization_Read([DataSourceRequest] DataSourceRequest request)
{
return Json(GetData(request.Page, request.PageSize).ToDataSourceResult(request));
}
[NonAction]
private List<MsgBlock> GetData(int page, int getCount)
{
MVCLogging model = new MVCLogging();
// Fetches the data
return model.ListadoTrazas;
}
Model MsgBlock
具有Grid Columns方法中定义的相同属性:
我忘了什么吗?
答案 0 :(得分:1)
我在这里看到的唯一潜在问题是您正在利用网格上的服务器操作,但是使用一组数据初始化网格,而不是让它获取初始数据。在使用MVC扩展进行虚拟化的Kendo演示中,网格定义如下所示:
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.OrderViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(o => o.OrderID).Width(60);
columns.Bound(o => o.CustomerID).Width(90);
columns.Bound(o => o.ShipName).Width(220);
columns.Bound(o => o.ShipAddress).Width(280);
columns.Bound(o => o.ShipCity).Width(110);
columns.Bound(o => o.ShipCountry).Width(110);
})
.Sortable()
.Scrollable(scrollable => scrollable.Virtual(true))
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(100)
.Read(read => read.Action("Virtualization_Read", "Grid"))
)
)
请注意,在提供类型后(Kendo.Mvc.Examples.Models.OrderViewModel),没有提供初始数据集,而初始化尝试为网格提供需要呈现的数据(Model.ListadoTrazas)。也许这让网格混淆,认为它有所有数据需要?我会尝试取出Model.ListadoTrazas并让网格从get get中获取数据。