Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确检测DataTable中的页面?_Javascript_Jquery_Datatables - Fatal编程技术网

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);
}