Class isp api::DbFilterAction

Материал из ISPWiki
Перейти к: навигация, поиск

Класс isp_api::DbFilterAction

Класс для работы с фильтрами

#include <dbaction.h> 

Описание:

class isp_api::DbFilterAction

В отличии от FilterAction, нет необходимости обрабатывать условия фильтра вручную. На основании значений полей будет построено SQL условие, которое в дальнейшем автоматически будет добавлено к SQL выражению для построения списка. Для изменения параметров SQL условия вы можете использовать ряд дополнительных атрибутов, которые могут быть установлены на поля ввода:

  • sqlname - имя поля, которое будет сравниваться, по умолчанию берется значение атрибута name
  • nullvalue - значение, при выборе которого надо проверять поле таблицы на NULL
  • sql - SQL выражение, которое необходимо подставить в условие. все подстроки VALUE в этом выражении будут заменены на экранированное значение параметра формы, подстроки QVALUE на экранированное значение в кавычках. Если вы используете атрибут sql, атрибуты sqlname и delimiter никак не обрабатываются.
  • query (только для select полей) - SQL выражение, которое будет использовано для построения списка значений
  • delimiter - помимо того, что он определяет вид удобочитаемого представления фильтра, он так же определяет тип условия для сравнения. Если delimiter = ' ~ ', будет подставлено выражение для поиска подстроки.
Например:

<metadata name="table.filter" type="form"> 
  <form> 
    <field name="id"> 
      <input type="text" name="id"/> 
    </field> 
    <field name="name"> 
      <input type="text" name="name" delimiter=" ~ " sqlname="table.full_name"/> 
    </field> 
    <field name="type"> 
      <select name="type" query="select id, name from types"/> 
    </field> 
    <field name="extparam"> 
      <input name="extparam" sql="(SELECT COUNT(*) FROM exttable WHERE exttable.table_id=table.id AND name=__QVALUE__)>0"/> 
    </field> 
  </form> 
</metadata> 

Если пользователь заполнит все поля, в запрос будет добавлено следующее условие (id - значение из поля id): id='id' AND table.full_name LIKE '__name__' AND type='type' AND (SELECT COUNT(*) FROM exttable WHERE exttable.table_id=table.id AND name='extparam')>0

Родители:


Открытые члены (кратко)

Защищённые члены (кратко)

virtual string OnSetValue ( Session &ses , string &data , mgr_xml::XmlNode node , const string &name , const string &value )

Метод вызывается для каждого установленного поля фильтра


virtual void FormTune ( Session &ses )

Методы

virtual string OnSetValue ( Session &ses , string &data , mgr_xml::XmlNode node , const string &name , const string &value )

Данный метод является защищённым

Метод вызывается для каждого установленного поля фильтра

Аргументы:
[ses] текущая сессия
[data] данные фильтра. Вы можете добавить любую информацию к этим данным
[node] узел xml описывающий поле фильтра
[name] имя параметра
[value] значение параметра
Returned: удобочитаемое представление параметра

virtual void FormTune ( Session &ses )

Данный метод является защищённым

Метод для формирования формы с данными фитра

В большинстве случаев нет необходимости в изменении формы фильтра большинство операций может быть сделана через изменения метаданных