2013-05-15 4 views
1

У меня есть jquery datatable, и мне нужно отфильтровать и отсортировать внутри ячейки, которая содержит html select input по тексту в выбранной опции <select><option selected="selected">**text to filter**</option></select>.jQuery datatable sort и order from selected option column

Так что мне нужно искать строки в таблице, содержащие td, который содержит поле выбора, в котором я выбрал вариант с текстом, используемым для поиска.

Так что если в ячейке я выбираю вариант с «текст для фильтрации» текст, который должен быть виден. Возможно ли это? Как мне это сделать?

Спасибо

+0

В моей таблице содержится столбец с полем выбора для каждой строки, и пользователь может выбрать опцию в каждой строке. Чем мне нужно отфильтровать таблицу по выбранному значению – AleCat83

ответ

2

Вы хотите использовать пользовательские фильтры, я думаю. http://datatables.net/release-datatables/examples/plug-ins/range_filtering.html

Смотрите эту jsfiddle: http://jsfiddle.net/DYyLd/

для поиска «х» и только строки с «х» выбран покажет. Измените выбранную опцию, и поиск найдет ее/опустит по мере необходимости.

$.fn.dataTableExt.afnFiltering.push(
    function(oSettings, aData, iDataIndex) { 
     var oTable = $('#myTable').dataTable(); 
     var nodes = $(oTable.fnGetNodes(iDataIndex)); 
     var selItem = nodes.find('select').val(); 

     // This is basic. You should split the string and look 
     // for each individual substring 
     var filterValue = $('div.dataTables_filter input').val(); 

     return (selItem.indexOf(filterValue) !== -1); 
    } 
); 

Кроме того, я добавил следующее:

$('select').click(function() { $('#myTable').dataTable().fnDraw(); }); 

, который перерисовывает таблицу, когда какой-либо из выбирает изменяются - тот путь, они повторно фильтруют.

Как прокомментировано в примере, моя функция поиска очень проста, но только для того, чтобы увидеть, содержит ли выбранный элемент в поле выбора точный текст в поле поиска, чувствительный к регистру. Вы почти наверняка захотите разбить строку пробелами и искать каждую подстроку в selItem. Также обратите внимание, что этот метод не ищет другие столбцы (столбцы) - он выглядит только в столбце с полем выбора. Вы можете также искать другие столбцы.

+0

привет, спасибо за интересную в моей проблеме. Это решение похоже на то, что единственная проблема заключается в том, что «selectBox [0] .value», как представляется, всегда возвращает значение первой опции или значение, предварительно выбранное кодом (с выбранным = «selected»). поэтому, если я изменю свой выбранный параметр в режиме реального времени, фильтр будет всегда фильтроваться исходным значением. Есть решение этой проблемы? – AleCat83

+1

Да, кажется, что параметр aData, переданный функции фильтрации, использует данные так, как это было во время создания. Я изменил его, чтобы вытащить фактические данные из узлов DataTable. –

+0

Это работает! Большое спасибо – AleCat83