数据表和分页以及行选择问题

Phi*_*l O 6 javascript jquery datatables

我有一个使用带分页的数据表的应用程序。用户选择表格中的一行,表格下方会显示一个报告。用户可以编辑报告。如果用户尝试选择表中的另一行而不保存任何挂起的编辑,他们会收到警告并有机会返回到先前选择的行并保存更改或继续下一行。如果两行都显示在表格的同一页中,这将非常有效。

但是,如果用户有未保存的编辑并且没有选择同一页面中的另一行,则用户选择另一个页面。用户然后收到警告并决定返回到正在编辑的行,它的工作方式与我想要的不太一样。在这种情况下,用户成功返回到上一页,但我无法弄清楚如何将先前选定的行显示为选定的(尽管该行确实具有选定的类)。

我用我的最新代码看到的是,在页面返回上一个页面之前,在新页面中选择了行(具有正确的索引)。当然,上一页中所需的行选择不会被选中。

页面事件处理程序中感兴趣的两行是:

      //return to previous page
      dt_table.page(pageIndexToReturn).draw('page');  

      //set selection on previously selected row
      dt_table.row(rowIndexToReturn, pageIndexToReturn).select();
Run Code Online (Sandbox Code Playgroud)

这是整个页面事件处理程序:

   dt_table.on('page.dt', function () {
        var info = dt_table.page.info();
        var newPageIndex = info.page;
        var state = dt_table.state();
        var delta = (info.start-state.start)/state.length;
        var pageIndexToReturn = Math.floor(Math.abs(newPageIndex - delta) );

        var oldRow = getCurrentRow();
        var rowIndexToReturn = $('#selectedRowIndex').val();
        dt_table.$('tr.selected').removeClass('selected');   //need this here

        determine(this).then(function(result) {
            var enabled = result['enabled'];
            if (enabled === 'true') {
                showModal().then(function(save) {
                    if (save == 'true') {  
                        //return to previous page
                        dt_table.page(pageIndexToReturn).draw('page');  

                        //set selection on previously selected row
                        dt_table.row(rowIndexToReturn, pageIndexToReturn).select();
                    }
                    else {
                        clearSelectedReports();
                    }
                })
            }
            else {
                clearSelectedReports();
            }
        })
    });
Run Code Online (Sandbox Code Playgroud)

问题是为什么在设置上一页之前选择了该行?它的行为好像在页面选择语句之前执行行选择语句?

关于如何解决这个问题的任何想法?

Phi*_*l O 3

我添加了一个绘制事件处理程序,该处理程序在页面处理程序返回后被调用。绘制处理程序重置我的行选择。