0

我创建了一个数据表,当单击一行时,该行将突出显示。

$("#example tbody").click(function(event) {
  $(eTable.fnSettings().aoData).each(function (){
     $(this.nTr).removeClass('row_selected');
  });

 $(event.target.parentNode).addClass('row_selected');

});

表中的数据会自动刷新

function refreshTable(table){
  eTable.fnReloadAjax(null, null, true);    
}           

function tableRefresher() {
    refreshTable(eTable);
    tid = setTimeout(tableRefresher, 1000); // repeat myself
}

刷新表格后,所选行不再突出显示。

刷新后如何保持选择完整的任何想法?

谢谢!

4

2 回答 2

2

对于任何有兴趣的人,

这或多或少是我解决问题的方式

首先将隐藏的选定行id存储在一个变量中,selectedRowId

$('#example tbody tr').live('click', function () {
    var data = eTable.fnGetData(this);
    selectedRowId = data[4];
});

刷新表

refreshTable(eTable,'getAlerts');

function refreshTable(table, urlData)
{
  $.getJSON(urlData, null, function( json )
  {
    //table = $(tableId).dataTable();
    oSettings = table.fnSettings();
    table.fnClearTable(this);
    for (var i=0; i<json.aaData.length; i++)
    {
      table.oApi._fnAddData(oSettings, json.aaData[i]);
    }
    oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
    table.fnDraw();
    setSelectedRow();
  });
}

并在刷新后重新选择了行

function setSelectedRow(){
    $(eTable.fnSettings().aoData).each(function (){
        var data = eTable.fnGetData(this.nTr);
        if(selectedRowId == data[4]){
            $(this.nTr).addClass('row_selected');   
        }   
    });
}
于 2013-08-05T09:14:32.310 回答
0

最简单的方法是让您的$("#example tbody").click()事件也存储一个带有所选行值的 cookie。

然后有你的refreshTable(table)函数,读取cookie,并在ajax调用成功返回后重新添加'row_selected'类。

所以 --> 表加载,用户选择一行,行索引存储在 cookie 中,表刷新,cookie 读取,行重新选择。

魔法!

于 2013-08-03T23:38:17.300 回答