jquery datatable無數據提示不居中顯示


原文地址:https://www.jianshu.com/p/fc4784d11722

昨天遇到一個問題,datatable生成的表格沒有數據,但是“No data found”沒有居中,根本原因是clospan屬性值設置不正確。排查發現這個問題只出現在渲染時處於不可見狀態的表格。

 

解決辦法:改jquery.dataTables.js的源碼。return$(_pluck( oSettings.aoColumns,'nTh') ).filter(':visible').length;這一步返回的是可見列的數量,改成return$(_pluck( oSettings.aoColumns,'nTh') ).length;就是返回所有列的數量。如果采取這種辦法,請先保證不會影響其他功能。

 

通過很長時間的研究,確定是jQuery dataTables.js的問題。找到了空數據時生成的邏輯。源代碼如下:

/* Table is empty - create a row with an empty message in it */

varsZero=oLang.sZeroRecords;

if( oSettings.iDraw==1&&_fnDataSource( oSettings ) =='ajax')

{

sZero=oLang.sLoadingRecords;

}

else if(oLang.sEmptyTable&& oSettings.fnRecordsTotal() ===0)

{

sZero=oLang.sEmptyTable;

}

關鍵代碼:

'valign':'top',

'colSpan':_fnVisbleColumns( oSettings ),

'class':  oSettings.oClasses.sRowEmpty

} ).html(sZero) )[0];

一直要找的就是這個屬性,看看這個函數時如何定義的吧。看名字就知道應該和可見的列有關。愈加證明我的推測了。

/**

* Get the number of visible columns

*@param{object} oSettings dataTables settings object

*@returns{int} i the number of visible columns

*@memberofDataTable#oApi

*/

function_fnVisbleColumns( oSettings )

{

return$(_pluck( oSettings.aoColumns,'nTh') ).filter(':visible').length;

}

 

到這里終於找到了問題的原因,原來dataTable的clospan屬性是獲取所有可見列的數量。如果當時表格是隱藏的,那么可見的列數自然為0,所以clospan屬性也就設置為0。當表格再次可見時,colspan的值為0,所以提示信息沒有居中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM