Плагин Datatables ColVis - скрытые столбцы и объединение столбцов

У меня есть таблица данных с 9 столбцами, столбцы [0] и [8] скрыты. Затем столбцы [7] и [8] объединяются в один столбец (см. код ниже).

Бит, с которым я борюсь, - это использование плагина ColVis, когда я скрываю столбец, слияние столбцов [7] и [8] портится.

Надеюсь, что это имело смысл, любая помощь будет принята с благодарностью.

var $buTable= $("#business_table").dataTable( {
        "oLanguage": {
            "sSearch": "Filter:"
        },
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "scripts/business_serverside.php",
    "iDisplayLength": 10,       
        "bJQueryUI": false,
        "sPaginationType": "scrolling",
        "sDom": '<"clear"><"top"CTilr<"clear">pt>',
        "aoColumns": [ 
            {"bVisible":false},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":true},
            {"bVisible":false}
        ],
        "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
        $('td:eq(6)', nRow).html(''+ aData[7] +'&nbsp;'+ aData[8] +'');        
        },
        "oTableTools": {
            "sSwfPath": "swf/copy_csv_xls_pdf.swf"
        },
        "oColVis": {
            "activate": "mouseover",    
            "aiExclude": [0,8]
        }
    }).columnFilter({
            aoColumns: [ 
                    { type: "select"},
                    { type: "text" },
                    { type: "select" },
                    { type: "select"},
                    { type: "text"},
                    { type: "text"},
                    { type: "select"},
                    { type: "text"}
                ]
        }); 

person Codded    schedule 06.08.2012    source источник


Ответы (1)


Прямо сейчас вы исключаете возможность скрытия столбца:

"oColVis": {
    "activate": "mouseover",    
    "aiExclude": [0,8]
}

Но я думаю, вам нужно либо а) исключить их обоих из сокрытия, чтобы они никогда не были подделаны, либо б) написать метод обратного вызова, который связывает их состояния видимости, поэтому, если одно скрывается, другое скрывается автоматически и так же разумно чтобы они стали видны.

Что-то вроде добавления fnDrawCallback в ваш datatable init:

// method gets called each table draw / re-draw
"fnDrawCallback": function( oSettings ) {
    // column buttons get ids based on their column title 
    // so let's assume your columns are titled 'column7' and 'column8'
    $('#column7').change( function() {
        $('#column8').trigger('click');
    });

    $('#column8').change( function() {
        $('#column7').trigger('click');
    });
},

Код не тестировался, но если вы обнаружите, что не можете вызывать события изменения событий для $('#column8) и $('#column7'), вам придется вручную проверить столбец 7 на видимость. Случайное предположение о том, как это сделать, будет примерно таким:

"fnDrawCallback": function( oSettings ) {
    if( fnSetColumnVis( 7, false ) ) {
        fnSetColumnVis( 8, false );
    }
    else {
        fnSetColumnVis( 8, true );
    }
},

Надеюсь, это поможет!

person DrewT    schedule 05.12.2013