0

我有一个 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": []} ]
    });
}

除了通过构造函数初始化所有参数之外,还有没有办法做类似下面的事情?我想遵循这个好规则:

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

1 回答 1

2

您可以通过将每一列添加到数据表中来达到目的。然后,您可以使用 fnSetColumnVis 函数隐藏某些列(哪些列不符合您的条件):

var oTable = $('#myTable').dataTable({...});
for(var i = 0; i < columns.length; i++){
    if(columns[i] not matching criteria)
        oTable.fnSetColumnVis(i, false);
}
于 2013-02-11T16:46:49.933 回答