2017-08-14 105 views
0

我重新加载我的数据表10秒的间隔。当用户点击一行时,该行将突出显示。但是当数据表重新加载时,突出显示消失了。jquery datatable保留行重新加载后

这里是我确定年代缩短代码:

$(document).ready(function() 
{ 
    // set datatable 
    $('#example1').DataTable({   
    "ajax": { 
     "url": "api/process.php", 
     "type": "POST", 
     "dataSrc": '' 
    }, 
    "columns": [ 
     { "data": "" }, 
     { "data": "column1" }, 
     { "data": "column2" }, 
     { "data": "column3" } 
    ], 
    "iDisplayLength": 25, 
    "order": [[ 6, "desc" ]], 
    "scrollY": 600, 
    "scrollX": true, 
    "bDestroy": true, 
    "stateSave": true 
    }); 

    // reload datatable every 30 seconds 
    setInterval(function() 
    { 
    var table = $('#example1').DataTable(); 
    table.ajax.reload(); 
    }, 30000); 

    // highlight row 
    $('#example1 tbody').on('click', 'tr', function() 
    { 
    $('#example1 tbody > tr').removeClass('selected'); 
    $(this).addClass('selected'); 
    }); 
}); 

以上所有作品它究竟应该如何工作的。在数据表重新加载后,我只需要保留行高亮。

请帮助,并提前谢谢。

也...

我试图从这个职位的答案:jquery datatable highlight drops off after reload

但我报废了它作为行不再亮点。

+1

你可以添加一个工作小提琴。我想我可以帮助你,如果我工作小提琴... – Ashish451

+1

请解释你为什么要删除并添加使用两个不同的选择器'选定'类$('#example1 tbody> tr')。removeClass('selected'); $(this).addClass('selected'); –

+1

你想突出显示哪一行,任何特定行?我看不到任何发生在任何行上的事情,然后点击其他玩类的东西? Ajax调用正在发生,而不管任何单击的行。 –

回答

-1

你应该检查他们的实际选择文件来操纵这个。该功能已经内置,并在ajax.reload()上进行设置,它将保留您的选择。

你也可以用他们的方法应用类/样式。

https://datatables.net/reference/option/#select

1

请用以下更改更新js文件。下面的代码将保存在全局参数中点击的行,然后在ajax调用之后聚焦单击的行。

var gblIndex = 0; //this will save row clicked index 

function setFocus(){ 
$($('#example1 tbody > tr')[gblIndex]).addClass('selected'); 

} 


$(document).ready(function() 
{ 
    // set datatable 
    $('#example1').DataTable({   
    "ajax": { 
     "url": "api/process.php", 
     "type": "POST", 
     "dataSrc": '' 
    }, 
    "columns": [ 
     { "data": "" }, 
     { "data": "column1" }, 
     { "data": "column2" }, 
     { "data": "column3" } 
    ], 
    "iDisplayLength": 25, 
    "order": [[ 6, "desc" ]], 
    "scrollY": 600, 
    "scrollX": true, 
    "bDestroy": true, 
    "stateSave": true 
    }); 

    // reload datatable every 30 seconds 
    setInterval(function() 
    { 
    var table = $('#example1').DataTable(); 
    table.ajax.reload(); 
    setFocus(); // this will set focus/highlight row 
    }, 30000); 

    // highlight row 
    $('#example1 tbody').on('click', 'tr', function() 
    { 
    $('#example1 tbody > tr').removeClass('selected'); 
    $(this).addClass('selected'); 
    gblIndex = $(this).index(); // this will save the index clicked 
    }); 
}); 
+0

我得到以下错误:SyntaxError:意外的标记[它指向函数setFocus()中的[gblIndex]。 –

+1

请删除空格[gblIndex]并勾选 –

+0

删除空格,但仍然收到相同的错误。 –

相关问题