jQuery datatable - используя индекс столбца, проверьте, видим ли / присутствует столбец в jQuery datatable - PullRequest
0 голосов
/ 21 февраля 2012

Так как мой предыдущий пост не получил никакого ответа, я отправляю его повторно.

Я использую datatable от jQuery и иногда переключаю видимость некоторых столбцов, используя приведенный ниже код

tableId.fnSetColumnVis(0, false);

Сделав это, в пользовательском интерфейсе есть некоторые другие элементы управления, для которых мне нужно переключить видимость.Итак, мне нужно проверить (скажем, при загрузке страницы), видим ли / скрыт / присутствует столбец с индексом 0 - что угодно.Я ищу что-то вроде $ ("# tableId"). IsColumnVisible (columnIndex);

Пожалуйста, сообщите.Спасибо

Ответы [ 2 ]

1 голос
/ 11 февраля 2013

Хорошо, никто так и не смог ответить на ваш вопрос, и я тоже искал это тривиальное задание, и мне потребовалось больше времени, чем ожидалось, чтобы выяснить, как это сделать.

вот как, действительно легко, но не задокументировано должным образом.

 /* Get the DataTables object again - this is not a recreation, just a get of the object*/
var oTable = $('#example').dataTable();

var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnSetColumnVis( iCol, bVis ? false : true );

по сути, функция fnSettings () также имеет свойство aoColumns, которое будет содержать все свойства столбца, установленные при инициализации.

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

$('.dataTable td').click( function () {
// Get the position of the current data from the node
var oTable = $(this).closest('.dataTable').dataTable();
var aPos = oTable.fnGetPosition( this );
console.log(aPos);
} );
1 голос
/ 21 февраля 2012

Я не знаю jquery datatable, но я думаю, вы можете просто проверить, имеет ли заголовок свойство css 'display, установленное в hide.Пример кода:

if($("#tableId .th-1").css("display")=="none"){
   //do hidden related action
} else {
   //do visible related action
}

, предполагая, что проверяемый столбец имеет класс th-1.Если вы хотите более общий подход, я могу предложить это:

$("#tableId th").each(function(index, element){

    if($(this).css("display")=="none"){
       //do hidden related action
    } else {
       //do visible related action
    }

});

Это проверит каждую таблицу вашей таблицы.

...