2017-01-16 3 views
2

мне нужно создать фильтр на Tipical столбцов, созданных с изображениями: каждое поле представляет собой изображение в этом формате:Попытки создать yadcf фильтр для столбца с изображениями

<img src='http://lab.onclud.com/psm/blackcircle.png' class='notasg'> 

Я создал скрипку пример здесь: fiddle

экспликации:

  • есть только два состояния diferents: [назначен/не назначен], хотя есть 4 diferents изображения (черный, красный, желтый и зеленый).
  • Только черные изображения соответствуют не присвоенному статусу. Остальные три (красный, желтый и зеленый) соответствуют присвоенному статусу.
  • Как вы могли видеть, я попытался дифференцировать эти теги по классу HTML в элементах img (notasg/asgn).

Заранее спасибо.

PD:

Я получаю данные из JSON, так что я не могу поставить:

<td data-search="notassigned"> 

непосредственно на HTML код. В качестве решения я использовал параметр createdCell (columnDefs), как вы могли видеть на следующем обновленном, чтобы создать атрибут поиска данных на элементе td fiddle.

В этом случае, как вы могли бы проверить, ваш ранее созданный фильтр не работает. Я пробовал некоторые решения, но никто не работал.

Пожалуйста, помогите мне снова на этом. Заранее спасибо.

+0

Вы должны понимать, что ваше обновление на исходный вопрос изменяет решение, которое было задано на основе вашего исходного вопроса и оригинального примера jsfiddle, которые делают ваше обновление не очень актуальным съел но новый вопрос – Daniel

ответ

0

Вы можете использовать datatables HTML5 data-* attributes, а затем сказать yadcf полагаться на это дт функции с использованием html5_data

Так что ваши td будет выглядеть как

<td data-search="assigned"><img src='http://lab.onclud.com/psm/redcircle.png' class='asgn'></td>

и yadcf INIT будет выглядеть так:

var oTable = $ ('# example').Таблица данных();

yadcf.init(oTable, [ 
     { 
      column_number: 0, 
      html5_data: 'data-search', 
      filter_match_mode: 'exact', 
      data: [{ 
       value: 'assigned', 
       label: 'Assigned' 
      }, { 
       value: 'notassigned', 
       label: 'Not assigned' 
      }] 
     }]); 

Обратите внимание, что я использовал filter_match_mode: 'exact', потому что я использовал data-search="notassigned" и data-search="assigned", и с назначен слова включены в notassigned я должен был сказать yadcf выполнить точный поиска, этого можно избежать, если вы будет использовать уникальный термин поиска в атрибуте data-search=,

See working jsfiddle

Аноф эр решение, как введено kthorngren from datatables forum является использование следующей дт Код инициализации

var oTable = $('#example').DataTable({ 
    columnDefs: [{ 
     targets: 0, 
     render: function(data, type, full, meta) { 
      if (type === 'filter') { 
       return full[0].search('asgn') >=1 ? "assigned" : full[0].search('notasg') >= 1 ? "notassigned" : data 
      } else { 
       return data 
      } 
     } 
    }], 
}); 

и yadcf инициализации (удалено html5_data)

yadcf.init(oTable, [ 
    { 
     column_number: 0, 
     filter_match_mode: 'exact', 
     data: [{ 
      value: 'assigned', 
      label: 'Assigned' 
     }, { 
      value: 'notassigned', 
      label: 'Not assigned' 
     }] 
    } 
]); 

third option - look here

+0

Даниэль, еще раз спасибо за вашу помощь. Оно работает. – mgutbor

+0

Я должен задать вам другой вопрос об этой проблеме: Как я могу отфильтровать этот столбец нажатием кнопки [назначено], чтобы получить только строки с этим столбцом data-search = "assign" ??? Вот модифицированная скрипка: https://jsfiddle.net/mgutbor/m26jzxsf/; как вы могли видеть, кнопка только выдает предупреждение. Заранее спасибо x2;) – mgutbor

+0

вы должны пройти yadcf docs, чтобы раскрыть все его возможности, используйте 'yadcf.exFilterColumn', см. Рабочий jsfiddle https://jsfiddle.net/m26jzxsf/1/ – Daniel