2016-11-25 53 views
0

我使用的datatablesFixedColumns應用於前四列。列和所有單元格值從json動態加載,我想申請一些功能:Datatables:將工具提示添加到動態加載的所有單元格

1)工具欄提示欄標題。我已通過添加data-html="true" data-toggle="tooltip" title= ...

2)三列標題:現在在我的列標題中我有三個值,如果可能我希望有三行標題但我不知道如何更改str成列迭代。

3)如果單元格很長,請將其值減小。我加入這個代碼的HTML頁面

<style> 
#slTable td { 
    white-space: nowrap; 
    text-overflow:ellipsis; 
    overflow: hidden; 
    max-width:1px; 
} 
</style> 

4)添加提示到每個單元格的值來顯示所有的值,如果它是cutted.I已經遍歷每個單元中的數據表初始化之後,但在第一行沒有工具提示,頁面很慢,當我將鼠標放在一個值上時,所有的單元格都會修改自己的尺寸來移動所有的表格。

這是實際的JavaScript代碼:

var tableData; 
var tableName='#slTable'; 

$(document).ready(function(){ 

    jQuery.ajax({ 
     type : "GET", 
     url : "table/"+document.getElementById("hiddenIdCar").value, 
     headers: {'Content-Type': 'application/json'}, 
     beforeSend: function() { 
      waitingModal.showPleaseWait(); 
     }, 
     success: function(data,status,xhr){ 
      //No exception occurred 
      if(data.success){ 
       tableData = data.result; 
       $.each(tableData.columns, function (k, colObj) { 
        //check if parnName is not empty 
        if (colObj.parName) 
         var str = '<th data-html="true" data-toggle="tooltip" title="<b>NAME</b>:'+ colObj.parName+'<br><b>DESCRIPTION</b>:' + colObj.description + '<br><b>NOTE</b>: ' + colObj.note + '"></i>' + colObj.parName + '</th>'; 
        else 
         var str = '<th data-html="true" data-toggle="tooltip" title="<b>DESCRIPTION</b>:'+colObj.description+'<br><b>NOTE</b>: ' + colObj.note + '"></i>' + colObj.description + '</th>'; 
        $(str).appendTo(tableName+'>thead>tr'); 
       }); 
      } else { 
       waitingModal.hidePleaseWait(); 
       notifyMessage(data.result, 'error'); 
      } 
     }, 
     error: function(xhr,status,e){ 
      window.location.href = "/500"; 
     } 
    }).complete(function() { 
     //initialize datatable 
     if (! $.fn.DataTable.isDataTable(tableName)) { 
      var slTable = $(tableName).DataTable({ 
       scrollCollapse: true, 
       scrollX:  true, 
       scrollY:  '60vh', 
       paging:   false, 
       "data": tableData.data, 
       "columns": tableData.columns, 
       fixedColumns: { 
        leftColumns: 4 
       }, 
       "initComplete": function(settings){ 
        $('[data-toggle="tooltip"]').tooltip({ 
         container: 'body' 
        }); 
        //add timeout because otherwise user could see a too fast waiting modal 
        setTimeout(function(){ 
         waitingModal.hidePleaseWait(); 
        }, 1000);  
       } 
      }); 
     } 
     else { 
      slTable.ajax.url("table/"+document.getElementById("hiddenIdCar").value).load(); 
     } 

     //TOOLTIP test cell 
     $(tableName+ ' tbody td').each(function (k, cellObj){ 
      this.setAttribute('title', cellObj.innerText); 
      this.setAttribute('data-toggle', "tooltip"); 
     }); 
     /* Apply the tooltips */ 
     slTable.$('td').tooltip({ 
//   "delay": 0, 
//   "track": true, 
//   "fade": 250 
     }); 
    });  
}); 

該表具有300行和200列(也許我要切換到服務器側處理)。 你能幫我嗎?感謝

更新1: 我已經感動了所有的工具提示代碼爲initComplete和它的作品

"initComplete": function(settings){ 
       //TOOLTIP test cell 
       $(tableName+ ' tbody td').each(function (k, cellObj){ 
        this.setAttribute('title', cellObj.innerText); 
        this.setAttribute('data-toggle', "tooltip"); 
       }); 
       $('[data-toggle="tooltip"]').tooltip({ 
        container: 'body' 
       }); 
       //add timeout because otherwise user could see a too fast waiting modal 
       setTimeout(function(){ 
        waitingModal.hidePleaseWait(); 
       }, 1000);  
      } 

任何想法,大約三排頭?

+0

引導工具提示? –

+0

是的,你可以在列循環中看到代碼。 – luca

+0

你可以用虛擬數據製作小提琴嗎? – sniels

回答

1

如果您運行此代碼,則它會自動激活所有工具提示。你不必擔心引用特定的。

$(function() { 
    $('[data-toggle="tooltip"]').tooltip() 
}) 
+0

對於單元格是的,但對於我必須指定容器的列:'body' – luca

1

問題是,你正試圖初始化DataTablestooltips.complete回調AJAX的。很有可能您的success方法中的邏輯尚未完成,並且您試圖在完整回調中應用Datatable和工具提示。我建議你將complete回調中的所有邏輯包裝到一個函數中,並在$.each(tableData.columns循環後調用該函數。

+0

謝謝,現在提示工具提示。我必須將三行設置爲標題 – luca

相關問題