gpt4 book ai didi

jquery - 如何配置数据表以使用页码而不是开始记录

转载 作者:行者123 更新时间:2023-12-01 03:11:10 25 4
gpt4 key购买 nike

我有一个现有的 Web 应用程序,当前使用 jqGrid,整个服务器端后端返回基于页码和页面长度的分页信息。现在我想开始在某些部分使用 DataTables,并且由于它的分页使用 Start record 和 Length,我想知道是否有某种方法可以配置 DataTables 以接受页码,这样我就不必修改整个后端。

有什么方法可以为此配置或调整数据表吗?

编辑:为了避免混淆,我谈论的是具有服务器端处理功能的 DataTable,而不是客户端分页。

编辑2:添加一些关于我的后端如何接受和响应来自浏览器的请求的代码。这是 ASP.NET MVC4。

我的服务始终使用正在使用的实体的数据页进行响应,方法如下:

Page<T> GetPage<TKey>(int pageNumber,
int pageSize,
Expression<Func<T, TKey>> orderBy,
bool ascending = true,
Expression<Func<T, bool>> predicate = null)

这将返回 Page<T>像这样的对象:

public class Page<T> : IEnumerable<T>
{
private readonly IList<T> _items;

public IList<T> Items
{
get { return _items; }
}

public Page()
{}

public Page(int currentPage, IEnumerable<T> items, int itemsPerPage, int totalItems, int totalPages)
{
PageIndex = currentPage;
_items = items.ToList();
TotalItems = totalItems;
PageSize = itemsPerPage;
TotalPages = totalPages;
}

public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalItems { get; private set; }
public int TotalPages { get; private set; }

public IEnumerator<T> GetEnumerator()
{
return _items.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}

然后,当返回操作响应时,它会在 Controller 中解析为 Json,以匹配网格插件所需的 json 结构(而它是 jqGrid 或 DataTables)。

我无法更改页面结构和分页机制,因为这会对 Web 应用程序产生巨大影响,因此不予讨论。我需要找到一种方法来调整 DataTables,以便它发送 PageNumber 而不是 Start 记录。 Length 参数将与我这边的 PageSize 相匹配,因此它非常适合。

最佳答案

您可以使用ajax.data属性来修改提交到服务器的数据。

$('#example').dataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "script.php",
"data": function(d, settings){
var api = new $.fn.dataTable.Api(settings);

// Convert starting record into page number
d.pageNumber = Math.min(
Math.max(0, Math.round(d.start / api.page.len())),
api.page.info().pages
);
}
}
});

关于jquery - 如何配置数据表以使用页码而不是开始记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924268/

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