使用datagridview虚拟模式时如何自定义分页的特定代码

How to customize a specific code for pagination when working with datagridview virtual mode on

我正在读取 xml 文件而不是数据库 table 并以这种方式进行分页

XDocument document = XDocument.Load(xmlFilePath);
var query = from r in document.Descendants("orders")
select new
{
    OrderID = r.Element("OrderID").Value,
    CustomerID = r.Element("CustomerID").Value,
    EmployeeID = r.Element("EmployeeID").Value
};
query = query.OrderBy(sortColumn + " " + OrderDirection);
query = query.Skip(lowerPageBoundary - 1 * rowsPerPage).Take(rowsPerPage);

但问题是 lowerPageBoundary 值是由另一个 class 控制的,我从 MSDN link https://msdn.microsoft.com/en-us/library/ms171624.aspx?f=255&MSPPError=-2147217396

我正在遵循 MSDN 给出的相同代码,但我的分页例程与下面的代码不兼容并且无法正常工作。

query = query.Skip(lowerPageBoundary - 1 * rowsPerPage).Take(rowsPerPage);

第一次 lowerPageBoundary 是 0 所以 skip 的值为 0 并且 take 的值为 16 当同一行第二次执行时 lowerPageBoundary 是 16-16=0

所以我的请求是有人请查看我在这里提供的 MSDN link 并查看控制 lowerPageBoundary 值的缓存 class 并建议我如何自定义LINQ 跳过并采取 MSDN 代码方案。

谢谢

看来你不必从lowerPageBoundary中扣除rowsPerPage。 IE。对于第一页 lowerPageBoundary = 0,rowsPerPage = 16,因此您需要跳过 0 条记录并取 16。对于第二页 lowerPageBoundary = 16,因此您需要跳过 16 行,然后取下 16 行,依此类推。 IE。您应该使用下一个代码:

query = query.Skip(lowerPageBoundary).Take(rowsPerPage);