如何在基于条件的渲染中将\ remove列添加到dataTables“aoColumns”

时间:2013-02-11 09:45:43

标签: javascript datatables

我有一个js函数在2个部分中使用的表上工作,这2个部分仅对td有所不同,我想使用这个相同的函数两次但是有一个参数告诉我是否要添加或不添加此列数据到渲染。这是一项常见任务,但我无法使用dataTables实现它。

function find(url, type)
{
    $('#table').dataTable({
        "bProcessing": true,
        "sAjaxSource": url,
        "sAjaxDataProp": "",
        "bDeferRender": true,
        "sPaginationType": "full_numbers",
        "bStateSave": true,
        "bAutoWidth": true,
        "bDestroy":true,
        "aoColumns":
        [
            {"mData": "a"},
            {"mData": "b"},
            {"mData": "conditionalData"}
        ],
        "oLanguage":
        {
            "sLengthMenu": "Mostra _MENU_ risultati per pagina",
            "sZeroRecords": "Nessun RISULTATO",
            "sInfo": "Mostra da _START_ a _END_ di _TOTAL_ risultati",
            "sInfoEmpty": "Mostra 0 su 0 di 0 risultati",
            "sInfoFiltered": "(Filtrati da _MAX_ risultati totali)",
            "sSearch": "Filtra:",
            "oPaginate":
            {
                "sFirst": "|<",
                "sLast": ">|",
                "sNext": ">",
                "sPrevious": "<"
            }
        },
        "aoColumnDefs": [ {"bSortable": false, "aTargets": []} ]
    });
}

除了通过构造函数初始化所有参数之外,还有办法执行以下操作吗?我想遵循this良好的规则:

"bDestroy":true,
"aoColumns":
[
    {"mData": "a"},
    {"mData": "b"},
    if(type == 1)
    {
        {"mData": "conditionalData"}
    }
],
"oLanguage":

1 个答案:

答案 0 :(得分:2)

您可以通过将每列添加到数据表来实现这一目的。然后,您可以使用fnSetColumnVis函数隐藏一些列(哪些符号与您的条件不匹配):

var oTable = $('#myTable').dataTable({...});
for(var i = 0; i < columns.length; i++){
    if(columns[i] not matching criteria)
        oTable.fnSetColumnVis(i, false);
}