J T*_*J T 5 asp.net-mvc kendo-ui
KendoUI添加的扩展方法(ToDataSourceResult)似乎在Pages> Page#1上失败.它在第一次加载页面时工作正常,但是当我尝试使用它进行虚拟滚动时,为了获取页面,2,3,4 ... N异步,该方法忽略了我正在尝试的IEnumerable对象中的所有数据改造.
我的代码如下:
我有一个MVC控制器,可以像这样获取数据:
Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);
Run Code Online (Sandbox Code Playgroud)
Database.GetEvents返回一个对象,如下所示:
public class ResultSet {
public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}
Run Code Online (Sandbox Code Playgroud)
每个ResultSetRow,是一个具有1个字符串,2个int作为属性的类的实例.
此时,我设置了一个断点并检查ResultSet.Set的内容.数据库使用request.PageSize指定的记录正确填充List.我已确认正在为任何和所有页码返回结果.
下一阶段,一切都很糟糕:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);
Run Code Online (Sandbox Code Playgroud)
我检查DataSourceResult对象的内容,其数组属性'Data'为空.
为什么我的模型(ResultSetRow)无法转换为Kendo的DataSourceResult对象?
一些额外的信息:
感谢您的帮助SO社区
Nic*_*ler 11
使用的主要原因ToDataSourceResult()是它在数据库服务器上运行过滤/排序/分组/分页.因此,当给定IQueryable尚未执行的时,它最有效.
它确实可以工作IEnumerable,但是你必须将整个表加载到内存中,这是不可扩展的.
因为您只获得一页的数据,所以在ToDataSourceResult调用时,它认为这是数据库中的所有数据,因此返回除第一页以外的页面的空列表.
| 归档时间: |
|
| 查看次数: |
7850 次 |
| 最近记录: |