Фильтрация в datatable

Привет всем.

В общем у меня в таблице в одном из столбцов вставлены в качестве содержимого иконки с помощью тега span, они отображают два состояния: true и false. Но, при применении фильтра selectFilter, я в выпадющем списке, в его пунктах, вижу нечто такое: <span class="my_class"></span>. Как решить эту проблему? Например, чтобы пользователь видел не тег, а хотя бы слова true и false.

Заранее спасибо за ответы и уделенное внимание.

Tagged:

Comments

  • Здравствуйте!

    Подскажите, пожалуйста, как именно Вы используете эти теги в данных?

    Дело в том, что selectFilter основан на обычном select input'е, который не отрисует содержимое html-темплейта.

    В то же время, фильтр собирает опции на основе данных. У этих опций всегда естьid иvalue:id используется для фильтрации, аvalue - для отображения опции. По умолчанию они идентичны.

    Если теги включены в данные, то я бы посоветовала задать опции отдельно: http://webix.com/snippet/8e521269

    Если же данные можно изменить, то, возможно, удобнее будет использоватьtemplate колонки для отрисовки любого html в ячейке:

    http://webix.com/snippet/bfc84d9d

  • Спасибо за такой толковый ответ :)

    Используются теги для отрисовки именно в колонках. Я просто взялся за новый проект, над которым уже кто-то работал и привожу все к толковому виду. Так как не нашел, где выудить данные с этими тегами, чтобы понять, как они перехватываются, я воспользовался другим ходом: сначала пробовал использовать onCollectValue, но данный event не отрабатывал. Посему я сделал решение в обход в ивенте onAfterLoad, загружая с помощью стандартных команд массив тегов option и в нужных тегах менял label на правильный. :)

  • Теперь другая проблема с использованием serverSelectFilter. В заисимости от выбранной позиции, на сервер надо отправлять Boolean, но в полях у select у меня же находится текст (тот самый тег), как это красиво преобразовать в Boolean?

  • Вероятно, дело в опечатке - событие названо onCollectValues, а onAfterLoad здесь, как мне кажется, не даст простого решения. Но если событие действительно не срабатывает, то пришлите, пожалуйста, сэмпл, где видна проблема.

    В стандартном случае, "обрётка" из тэгов (как и любой template колонки) не должна затрагивать оригинальные данные (если она не была изначально их частью, разумеется). Предположу, что всё-таки наилучший вариант - добиться использования "чистых" данных в таблице.

    Т.к. фильтрация серверная, то модифицировать запрос можно через proxy. Однако набор параметров для запроса на сервер приходит туда как объект, который придётся преобразовать в строку вручную:

    http://webix.com/snippet/c02be529

  • Спасибо. :)
    Я воспользовался Вашим советом насчет template для отрисовки нужного html.
    Теперь проблема в другом, не с данными, а скорее работа select странно происходит. Таблица рендерится у меня в protoUI динамически, соответственно заголовки, фильтры и данные обрабатываются в это protoUI. Каждый раз, когда я пользуюсь фильтрацией в select происходит следующее: данные фильтруются, устанавливается флаг selected на нужный пункт, НО select будто заново рендерится и в выпадающем списке остается всего два пунктп, тот самый, который был выбран мной ранее (ну, и соответственно пустой, который у нас ничего не фильтрует).

    P.S.: извините, что замучил вопросами, но интересно поучится у профи :)

  • Это нормальная ситуация для server-side фильтра: опции собираются заново после перезагрузки данных.

    Единственный вариант здесь задать опции отдельно. Вот, к примеру, стандартный метод сбора опций для конкретной колонки: http://webix.com/snippet/08eb2f24

  • Проблема с фильтрацией чисел. Если в какой-то колонке есть числа от 0 до 100, то если в фильтре ввести число 0, то также выведутся все числа, содержащие эту цифру, то есть 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Возможно ли сделать так, чтобы при поиске числа 0 были найдены только строки, содержащие 0?

  • edited May 2017

    Потому что числа в таблице рассматриваются как строки. В описании свойств колонки таблицы добавить надо sort: int.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!