2013-07-10 151 views
2

DataTables插件似乎不允許自定義渲染。在數據表中自定義渲染

我們可以初始化使用aTargets和mRender定製單元格呈現:

"aoColumnDefs": [{ 
    "aTargets": [transaction_id_index], 
"mRender": function (data, type, row) { 
    return 'custom '+data; 
    } 
}] 

我該怎麼辦表頭是一回事嗎?

注:我使用顯示和隱藏功能,所以我不能直接修改aColumns中的sTitle。

編輯

我想,以儘量減少列寬重命名列標題。我得到了這樣的標題:「foo_bar」。 現在我使用的這一點,但它不是最好的辦法是肯定的:

'fnInitComplete': function(oSettings, json){ 
    $(table).find("thead tr th").each(function(index) { 
     $(this).html($(this).html().split("_").join("<br>")); 
    }); 
}, 
"fnDrawCallback": function(oSettings) { 
    // TO IMPROVE 
    $(table).find("thead tr th").each(function() { 
     if($(this).text().indexOf("_") !== -1) { 
      $(this).html($(this).text().split("_").join("<br>"));           
     } 
    }); 
} 

感謝@kabstergo的提示! 我不關閉這個問題,因爲我的解決方案不是「乾淨」的。

回答

2

是的,你可以自定義頁眉和頁腳,因爲沒有人回答你生病嘗試給你一個開始。 注意:在數據表的內部工作方面,我沒有專家意見。

在我們的網站這裏我們有自定義標題的datatables。這是由這樣

var table = $('#my-datatable'); 
table.dataTable({ 
    ... 
    'sDom': '<"dataTables_header"lfr>t<"dataTables_footer"ip>', 
    'fnInitComplete': function(oSettings){ 
    // Style length select 
    table.closest('.dataTables_wrapper').find('.dataTables_length select').addClass('select blue-gradient glossy').styleSelect(); 
    tableStyled = true; 
    } 
}); 

就像我說的做,我希望它幫你的東西開始...

+0

這是一個良好的開端和好於另一funtion修改!我的問題是:在初始化時隱藏列(使用「bVisible」:false)。調用切換列可見性的fnShowHide()函數時,修改標題的最佳方法是什麼? – fdubrez

1

在數據表^ 1.10,有headerCallback鉤,你可以在初始化提供選項。

$是jQuery的)

$('#example').DataTable({ 
    headerCallback: function headerCallback(thead, data, start, end, display) { 
     $(thead) 
      .find('th') 
      .first() 
      .html('Displaying ' + (end - start) + ' records'); 
    } 
}); 

注意,第一個參數實際上可能是第一個trthead裏面,不一定是thead元素本身,相反的是規定在DataTables文檔中。

在與多個標題行(tr S)複雜的場景中,你可能需要選擇這樣的:

$('#example').DataTable({ 
    headerCallback: function headerCallback(thead, data, start, end, display) { 
     $(thead) 
      .closest('thead') 
      .find('th') 
      .first() 
      .html('Displaying ' + (end - start) + ' records'); 
    } 
});