在我的剑道网格中,我将其设置为使用分页,页面大小为 50。当网格发出读取请求时,我可以在过滤器中看到:第 1 页,50 行,然后下一页显示第 2 页, 50行等
但是每个返回结果都有相同的 50 行(来自第 1 页)。
解决方案实际上是在控制器/处理程序中。在我的 GET Read 请求中,我有 [FromBody] 的注释,它实际上需要使用 [FromQuery] 。 [FromBody] 标签仅适用于 POST 请求。
因此,即使网格发送了正确的请求,处理程序也无法正确接收或将其转发给 SQL。
将标签更改为[FromQuery],如下所示解决了问题。
public async Task<IActionResult> OnGetReadDataAsync([FromQuery][DataSourceRequest] DataSourceRequest request)
{
return new JsonResult(await db.table.ToListAsync().ToDataSourceResultAsync(request));
}
我也有同样的问题。 Kendo 根据对象的第一个属性对项目进行排序。就我而言,在显示用户时,用户的第一个属性可以为空。我只是通过 UserId 更改了该属性的位置。是:
public Guid Verified { get; set; }
public bool UserId { get; set; }
我将顺序更改为:
public bool UserId { get; set; }
public Guid Verified { get; set; }
并且它被修复了。看起来很有趣,不是吗?但原因是在sql server中。检查一下:
Select * from dbo.Users
ORDER BY [Verified]
OFFSET 10 ROWS FETCH NEXT 10 rows only
还有这个:
Select * from dbo.Users
ORDER BY [Verified]
OFFSET 20 ROWS FETCH NEXT 10 rows only
如果几乎所有用户的“已验证”为空,结果将是相同的。这就是为什么sql无法返回接下来的10个。
现在检查一下:
Select * from dbo.Users
ORDER BY [UserId]
OFFSET 20 ROWS FETCH NEXT 10 rows only
您看到问题已解决。
希望这能有所帮助。