Javascript 如何正确检测DataTable中的页面?
我正在使用 我试图做的是:通过使用列值之一,获取页码,该值位于何处 我试过这个: 但这并没有成功。原因是Javascript 如何正确检测DataTable中的页面?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在使用 我试图做的是:通过使用列值之一,获取页码,该值位于何处 我试过这个: 但这并没有成功。原因是 var pos = this.column(column, { order: 'current' }).data().indexOf(data); 在jQuery.fn.dataTable.Api.register('page.jumpToData()')中,仅当我位于值所在的页面时,才会返回值>=0。 例如,我想检测所需值所在的页面,但我停留在另一个页面上,所以要检测…第3页上的值,我需
var pos = this.column(column, { order: 'current' }).data().indexOf(data);
在jQuery.fn.dataTable.Api.register('page.jumpToData()')
中,仅当我位于值所在的页面时,才会返回值>=0。
例如,我想检测所需值所在的页面,但我停留在另一个页面上,所以要检测…第3页上的值,我需要转到这个页面,然后才能检测到它,这根本没有意义
我需要做的是:通过停留在pirst页面,使用其他页面的值,检测这些页码,然后导航到它们:
$('#Grid_grid').DataTable().page(PageNumber).draw(false);
我怎样才能做到这一点
编辑:
有一些想法(jumpToData()中的一些更改):
这让我返回0;
同时,把它放在控制台(Chrome F12)上工作正常(返回5)。怎么了
编辑3:
我想到了这个:
function LoadPage(value) {
var table = $('#Grid_grid').DataTable();
var pageNumber = table.search(value).page();
table.page(pageNumber).draw(false);
}
看起来很有希望,但我仍然无法验证它,因为控制台中的DataTable方法正在工作,但在.cshtml中没有(search()或page()不返回任何内容)
编辑4:
将问题移至
原因
您的新API方法page.jumpToData()
尝试查询所有页面数据,因为column()
API方法中的第二个参数默认具有属性page:“all”
。编写时,它将始终保留在第一页
解决方案
DataTables的创建者Allan Jardine发布了一个原始插件。它可以按预期工作,可以用来代替您的修改,以避免不必要的迭代
$.fn.dataTable.Api.register('page.jumpToData()',函数(数据,列){
var pos=此列(列{
顺序:“当前”
}).data().indexOf(数据);
如果(位置>=0){
var page=Math.floor(pos/this.page.info().length);
本.页(页).画(假);
}
归还这个;
});
演示
有关代码和演示,请参阅
注释
在上面的演示中,我添加了console.log(“页数”,table.page.info().pages);
只是为了演示API方法的工作原理。但是它们可能会工作,因为我有HTML源数据
如果您有来自Ajax的数据,则只需在加载数据时查询页数。使用option定义回调函数,当您的表已完全初始化、加载和绘制数据时将调用该函数。据我所知……原始方法应该可以工作,但……因为在我的解决方案中,该方法不起作用,这意味着问题Igot(在编辑2中描述)正在阻止它…嗯,当创建数据表后,.cshtml上的mentods不再反应(页面或搜索等)时会有什么原因(可能应该将此移到另一个问题)?还有…你们能用initComplete评论一下这个时刻吗?到底应该有什么?在编辑4中,我把问题部分移到了另一个问题上(因为描述太大了)
$('#Grid_grid').DataTable().page.info().pages;
function LoadPage(value) {
var table = $('#Grid_grid').DataTable();
var pageNumber = table.search(value).page();
table.page(pageNumber).draw(false);
}