gpt4 book ai didi

asp.net-mvc - ToDataSourceResult 扩展未填充 DataSourceResult 对象

转载 作者:行者123 更新时间:2023-12-04 17:10:51 24 4
gpt4 key购买 nike

KendoUI 添加的扩展方法 (ToDataSourceResult) 似乎在 Pages > Page #1 上失败。第一次加载页面时它工作正常,但是当我尝试将它与虚拟滚动一起使用时,以异步方式获取页面,2,3,4 ... N,该方法忽略了我正在尝试的 IEnumerable 对象中的所有数据来改造。

我的代码如下:

我有一个 MVC Controller ,它可以像这样获取数据:

Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);

Database.GetEvents 返回一个对象,如下所示:
public class ResultSet {

public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}

每个 ResultSetRow 都是一个类的实例,该类具有 1 个字符串和 2 个整数作为属性。

此时,我设置了一个断点并检查 ResultSet.Set 的内容。数据库正在正确填充列表,其中的记录数量与我使用 request.PageSize 指定的数量一样多。我已确认任何和所有页码都将返回结果。

下一阶段,一切都很糟糕:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);

我检查了 DataSourceResult 对象的内容,其数组属性“Data”为空。

为什么我的模型 (ResultSetRow) 无法转换为 Kendo 的 DataSourceResult 对象?

一些额外的信息:
  • 未使用聚合、组、排序和过滤器。
  • Database.GetEvents 返回的结果数与请求的页面大小相匹配。

  • 感谢您的帮助 SO 社区

    最佳答案

    使用ToDataSourceResult()的主要原因是它在数据库服务器上运行过滤/排序/分组/分页。因此,它在给定 IQueryable 时效果最佳。尚未执行。

    它确实适用于 IEnumerable ,但随后您必须将整个表加载到内存中,这是不可扩展的。

    因为你只能得到一页的数据,当 ToDataSourceResult被调用,它认为这是数据库中的所有数据,因此为除第一个之外的页面返回一个空列表。

    关于asp.net-mvc - ToDataSourceResult 扩展未填充 DataSourceResult 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295924/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com