Web-сервисы: Сервис по загрузке поисковых фильтров — различия между версиями
| [досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) |
|||
| (не показана 21 промежуточная версия 6 участников) | |||
| Строка 1: | Строка 1: | ||
==Введение== | ==Введение== | ||
Данный модуль предназначен для формирования поискового фильтра, т.е. позволяет при изменении какого-либо из критериев отбора туров определить возможные значения зависимых от него критериев. | Данный модуль предназначен для формирования поискового фильтра, т.е. позволяет при изменении какого-либо из критериев отбора туров определить возможные значения зависимых от него критериев. | ||
| + | |||
| + | ===Ссылка на тестовый сервис=== | ||
| + | С работой тестового [http://demo.megatec.ru/DS_Filterbinding/FilterBindingService.asmx сервиса по загрузке поисковых фильтров] вы можете ознакомиться на нашем демо-сервере. | ||
| + | |||
==Установка== | ==Установка== | ||
Для установки Сервиса по загрузке поисковых фильтров нужно создать директорию FilterBinding в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-filterbinding-2007.2.XX.XXXX.zip. | Для установки Сервиса по загрузке поисковых фильтров нужно создать директорию FilterBinding в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-filterbinding-2007.2.XX.XXXX.zip. | ||
| Строка 24: | Строка 28: | ||
В файле web.config, расположенном в папке FilterBinding пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). | В файле web.config, расположенном в папке FilterBinding пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). | ||
Строка подключения к базе данных ПК «Мастер-Тур»:<BR> | Строка подключения к базе данных ПК «Мастер-Тур»:<BR> | ||
| − | <add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/> | + | <add key = "connectionString" value = "Data Source=''ip-адрес сервера базы данных ПК Мастер-тур'';Initial Catalog=''название базы данных ПК Мастер-тур'';User ID=''логин пользователя ПК Мастер-тур'';Password=''пароль пользователя ПК Мастер-тур''"/> |
| + | <br>При использовании репликации в строке подключения необходимо указать подключение к поисковой базе. Настройка '''searchConnectionString''' веб-сервисом не поддерживается. | ||
| + | |||
==Настройка== | ==Настройка== | ||
После установки «Сервис по загрузке поисковых фильтров» доступен по адресу: | После установки «Сервис по загрузке поисковых фильтров» доступен по адресу: | ||
| − | * http://ip- адрес сервера Мастер-Веб/FilterBinding/FilterBindingService.asmx (обращение к сервису происходит путем передачи ему SOAP-сообщения) | + | * http://ip- адрес сервера Мастер-Веб/FilterBinding/FilterBindingService.asmx (обращение к сервису происходит путем передачи ему SOAP-сообщения) |
| − | + | ||
==Подготовка данных== | ==Подготовка данных== | ||
===Сигнатура вызова=== | ===Сигнатура вызова=== | ||
====FilterBindingService.asmx /GetFilter==== | ====FilterBindingService.asmx /GetFilter==== | ||
| − | |||
public HybridArrayDictionary<SchemeNodeBase, IList> GetFilter(List<SchemeNodeBase> nodes, SchemeNode changedNode, BindType bindType) | public HybridArrayDictionary<SchemeNodeBase, IList> GetFilter(List<SchemeNodeBase> nodes, SchemeNode changedNode, BindType bindType) | ||
| − | |||
| − | |||
| − | |||
===Формат данных=== | ===Формат данных=== | ||
| Строка 51: | Строка 53: | ||
{ | { | ||
/// <summary> | /// <summary> | ||
| − | /// Массив хранимых | + | /// Массив хранимых объектов |
/// </summary> | /// </summary> | ||
[XmlElement("HybridArrayDictionary")] | [XmlElement("HybridArrayDictionary")] | ||
| Строка 72: | Строка 74: | ||
/// Удаление элемента из коллекции | /// Удаление элемента из коллекции | ||
/// </summary> | /// </summary> | ||
| − | /// <param name="key">Ключ | + | /// <param name="key">Ключ удаляемого элемента</param> |
public void Remove(T1 key) { } | public void Remove(T1 key) { } | ||
| Строка 86: | Строка 88: | ||
/// </summary> | /// </summary> | ||
/// <param name="key">Ключ элемента</param> | /// <param name="key">Ключ элемента</param> | ||
| − | /// <returns>Значение | + | /// <returns>Значение элемента</returns> |
public T2 this[T1 key] { get; set; } | public T2 this[T1 key] { get; set; } | ||
| Строка 95: | Строка 97: | ||
public ArrayList Keys { get; } | public ArrayList Keys { get; } | ||
}</nowiki> | }</nowiki> | ||
| + | |||
====Описание класса SchemeNode==== | ====Описание класса SchemeNode==== | ||
| + | <font style="color:red">'''Внимание!'''</font> При передаче в запросе ''значения'' (Value) ''категории отеля'' (lstCategory) необходимо указывать '''Наименование''', а не ключ данной категории. | ||
| + | |||
| + | [[Файл: am_064.png|left|Полезная информация]] <BR> | ||
| + | Сервис возвращает ключ тура из поля '''TO_Key''' (ключ рассчитанного тура). Если необходимо возвращать ключ тура из поля '''TO_TRKey''' (ключ тура из справочника), <br/> то в web.config нужно добавить настройку <add key="quotedDynamicPriceTour" value="false"/>. | ||
| + | <BR> | ||
| + | |||
<nowiki>/// <summary> | <nowiki>/// <summary> | ||
/// Класс, представляющий собой узел поискового фильтра | /// Класс, представляющий собой узел поискового фильтра | ||
| Строка 186: | Строка 195: | ||
public void RestoreRelations(ICollection nodes) | public void RestoreRelations(ICollection nodes) | ||
}</nowiki> | }</nowiki> | ||
| + | |||
====Описание перечисления BindType==== | ====Описание перечисления BindType==== | ||
<nowiki>/// <summary> | <nowiki>/// <summary> | ||
| Строка 208: | Строка 218: | ||
<GetFilter xmlns="http://megatec.ru/"> | <GetFilter xmlns="http://megatec.ru/"> | ||
<nodes> | <nodes> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstDepartFrom" Value="" Type="DepartFrom" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_ctfromname" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstDepartFrom" Value="" Type="DepartFrom" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_ctfromname" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 214: | Строка 225: | ||
<ChildNodesString>[lstCountry]</ChildNodesString> | <ChildNodesString>[lstCountry]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCountry" Value="" Type="Country" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_cnname" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCountry" Value="" Type="Country" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_cnname" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 220: | Строка 232: | ||
<ChildNodesString>[lstTourType]</ChildNodesString> | <ChildNodesString>[lstTourType]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstTourType" Value="" Type="TourType" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourtypename" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstTourType" Value="" Type="TourType" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourtypename" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 226: | Строка 239: | ||
<ChildNodesString>[lstResort]</ChildNodesString> | <ChildNodesString>[lstResort]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstResort" Value="" Type="Resort" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_rsname" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstResort" Value="" Type="Resort" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_rsname" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 232: | Строка 246: | ||
<ChildNodesString>[lstCity]</ChildNodesString> | <ChildNodesString>[lstCity]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCity" Value="" Type="City" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_ctname" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCity" Value="" Type="City" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_ctname" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 238: | Строка 253: | ||
<ChildNodesString>[lstTour]</ChildNodesString> | <ChildNodesString>[lstTour]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstTour" Value="" Type="Tour" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourcreated desc" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstTour" Value="" Type="Tour" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourcreated desc" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 244: | Строка 260: | ||
<ChildNodesString>[lstHotel][lstDuration][lstCategory][lstBoard][lstCalendarTourDates]</ChildNodesString> | <ChildNodesString>[lstHotel][lstDuration][lstCategory][lstBoard][lstCalendarTourDates]</ChildNodesString> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstHotel" Value="" Type="Hotel" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdname" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstHotel" Value="" Type="Hotel" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdname" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 250: | Строка 267: | ||
<ChildNodesString /> | <ChildNodesString /> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstDuration" Value="" Type="Nights" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_nights" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstDuration" Value="" Type="Nights" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_nights" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 256: | Строка 274: | ||
<ChildNodesString /> | <ChildNodesString /> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCategory" Value="" Type="HotelStars" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdstars" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCategory" Value="" Type="HotelStars" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdstars" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 262: | Строка 281: | ||
<ChildNodesString /> | <ChildNodesString /> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstBoard" Value="" Type="Pansion" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort=" | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstBoard" Value="" Type="Pansion" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="pn_code" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 268: | Строка 288: | ||
<ChildNodesString /> | <ChildNodesString /> | ||
</SchemeNodeBase> | </SchemeNodeBase> | ||
| − | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCalendarTourDates" Value="" Type="CalendarTourDates" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="td_date" ParentControlName="" Bind="true"> | + | <SchemeNodeBase xsi:type="SchemeNode" Name="lstCalendarTourDates" Value="" Type="CalendarTourDates" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false" |
| + | DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="td_date" ParentControlName="" Bind="true"> | ||
<TypeDependencies /> | <TypeDependencies /> | ||
<DefaultSelect xsi:type="DefaultSelection" /> | <DefaultSelect xsi:type="DefaultSelection" /> | ||
| Строка 279: | Строка 300: | ||
</soap:Body> | </soap:Body> | ||
</soap:Envelope></nowiki> | </soap:Envelope></nowiki> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | [[Category: | + | |
| + | [[Category:Web-сервисы]] | ||
Текущая версия на 11:29, 15 августа 2019
Введение
Данный модуль предназначен для формирования поискового фильтра, т.е. позволяет при изменении какого-либо из критериев отбора туров определить возможные значения зависимых от него критериев.
Ссылка на тестовый сервис
С работой тестового сервиса по загрузке поисковых фильтров вы можете ознакомиться на нашем демо-сервере.
Установка
Для установки Сервиса по загрузке поисковых фильтров нужно создать директорию FilterBinding в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива mw-filterbinding-2007.2.XX.XXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки FilterBinding.
Создание виртуального каталога
По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
- 1. Зайти в Пуск (Start) – Настройки (Settings) – Панель управления (Control Panel)
- 2. В открывшемся окне выбрать Администрирование (Administrative Tools)
- 3. Запустить Internet Information Services (IIS) Manager
- 4. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и зайти в Свойства (Properties)
- 5. В открывшемся окне, в закладке Directory нужно нажать кнопку «Create», а затем кнопку «ОК»
Подключение к базе данных ПК «Мастер-Тур»
В файле web.config, расположенном в папке FilterBinding пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести).
Строка подключения к базе данных ПК «Мастер-Тур»:
<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>
При использовании репликации в строке подключения необходимо указать подключение к поисковой базе. Настройка searchConnectionString веб-сервисом не поддерживается.
Настройка
После установки «Сервис по загрузке поисковых фильтров» доступен по адресу:
- http://ip- адрес сервера Мастер-Веб/FilterBinding/FilterBindingService.asmx (обращение к сервису происходит путем передачи ему SOAP-сообщения)
Подготовка данных
Сигнатура вызова
FilterBindingService.asmx /GetFilter
public HybridArrayDictionary<SchemeNodeBase, IList> GetFilter(List<SchemeNodeBase> nodes, SchemeNode changedNode, BindType bindType)
Формат данных
Описание класса HybridArrayDictionary
/// <summary>
/// Класс, реализующий часть функционала Hashtable,
/// но не реализует интерфейс IDictionary,
/// что дает возможность передавать его в XMLSerializer
/// </summary>
/// <typeparam name="T1">Класс для ключа</typeparam>
/// <typeparam name="T2">Класс для значения</typeparam>
public class HybridArrayDictionary<T1, T2>
{
/// <summary>
/// Массив хранимых объектов
/// </summary>
[XmlElement("HybridArrayDictionary")]
public List<Pair<T1, T2>> Items { get; set; }
public HybridArrayDictionary(){ }
public HybridArrayDictionary(IDictionary<T1, T2> dict) { }
public Dictionary<T1, T2> ToDictionary(){ }
/// <summary>
/// Добавление элемента в коллекцию
/// </summary>
/// <param name="key">Ключ</param>
/// <param name="value">Значение</param>
public void Add(T1 key, T2 value) { }
/// <summary>
/// Удаление элемента из коллекции
/// </summary>
/// <param name="key">Ключ удаляемого элемента</param>
public void Remove(T1 key) { }
/// <summary>
/// Проверка наличия элемента с заданным ключом
/// </summary>
/// <param name="key">Ключ элемента</param>
/// <returns></returns>
public bool Contains(T1 key) { }
/// <summary>
/// Доступ к значению элемента по ключу
/// </summary>
/// <param name="key">Ключ элемента</param>
/// <returns>Значение элемента</returns>
public T2 this[T1 key] { get; set; }
/// <summary>
/// Список ключей элементов, имеющихся в коллекции
/// </summary>
[XmlIgnore]
public ArrayList Keys { get; }
}
Описание класса SchemeNode
Внимание! При передаче в запросе значения (Value) категории отеля (lstCategory) необходимо указывать Наименование, а не ключ данной категории.
Сервис возвращает ключ тура из поля TO_Key (ключ рассчитанного тура). Если необходимо возвращать ключ тура из поля TO_TRKey (ключ тура из справочника),
то в web.config нужно добавить настройку <add key="quotedDynamicPriceTour" value="false"/>.
/// <summary>
/// Класс, представляющий собой узел поискового фильтра
/// </summary>
public class SchemeNode : SchemeNodeBase
{
/// <summary>
/// Имя сборки, содержащей лоадеры
/// </summary>
public override string Assembly { get; set; }
/// <summary>
/// Вызывает ли изменение состояния узла отправку запроса на сервер
/// </summary>
public override bool AutoPostBack { get; set; }
/// <summary>
/// Коллекция узлов, зависящих от данного узла
/// </summary>
public override List<SchemeNodeBase> ChildNodes { get; }
/// <summary>
/// Список узлов, зависящих от данного узла в формате [node1name][node2name]...[nodeNname]
/// </summary>
public string ChildNodesString { get; set; }
/// <summary>
/// Поле контрола, содержащее отображаемый текст
/// </summary>
public override string DataTextField { get; set; }
/// <summary>
/// Поле контрола, содержащее значение
/// </summary>
public override string DataValueField { get; set; }
/// <summary>
/// Текст отображаемый у первого элемента списка (например "Все")
/// </summary>
public override string FirstItem { get; set; }
/// <summary>
/// Имя контрола, который отображает содержимое узла
/// </summary>
public override string Name { get; set; }
/// <summary>
/// Имя контрола, который расположен на уровень выше по иерархии зависимостей узлов
/// </summary>
public override string ParentControlName { get; set; }
/// <summary>
/// Коллекция узлов, от которых зависит узел
/// </summary>
public override List<SchemeNodeBase> ParentNodes { get; }
/// <summary>
/// Список узлов, от которых зависит узел в формате [node1name][node2name]...[nodeNname]
/// </summary>
public string ParentNodesString { get; set; }
/// <summary>
/// Поле БД, по которому будет произведена сортировка
/// </summary>
public override string Sort { get; set; }
/// <summary>
/// Коллекция пар [имя источника]-[ключ в БД источника]
/// </summary>
public override Hashtable SourceValues { get; set; }
/// <summary>
/// Тип узла поискового фильтра
/// Возможные значения: DepartFrom, Country, TourType, Resort,
/// City, Tour, Hotel, Room, Nights, HotelStars, Pansion,
/// CalendarTourDates, CalendarTourDatesJs
/// </summary>
public override string Type { get; set; }
/// <summary>
/// Значение поискового узла
/// </summary>
public override string Value { get; set; }
/// <summary>
/// Восстановление связей между узлами
/// (заполнение ParentNodes и ChildNodes на основании ParentNodesString и ChildNodesString)
/// </summary>
/// <param name="nodes"></param>
public void RestoreRelations(ICollection nodes)
}
Описание перечисления BindType
/// <summary>
/// Тип бинда
/// </summary>
public enum BindType
{
//первая
First,
//контрол изменился
ControlChanged,
//загрузка по умолчанию
Default
}
Работа в системе
Пример вызова
Пример SOAP-запроса к сервису
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetFilter xmlns="http://megatec.ru/">
<nodes>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstDepartFrom" Value="" Type="DepartFrom" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_ctfromname" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString />
<ChildNodesString>[lstCountry]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstCountry" Value="" Type="Country" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="sd_cnname" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom]</ParentNodesString>
<ChildNodesString>[lstTourType]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstTourType" Value="" Type="TourType" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourtypename" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry]</ParentNodesString>
<ChildNodesString>[lstResort]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstResort" Value="" Type="Resort" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_rsname" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstTourType]</ParentNodesString>
<ChildNodesString>[lstCity]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstCity" Value="" Type="City" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_ctname" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstTourType][lstResort]</ParentNodesString>
<ChildNodesString>[lstTour]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstTour" Value="" Type="Tour" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="true"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_tourcreated desc" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstTourType][lstResort][lstCity]</ParentNodesString>
<ChildNodesString>[lstHotel][lstDuration][lstCategory][lstBoard][lstCalendarTourDates]</ChildNodesString>
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstHotel" Value="" Type="Hotel" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdname" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstResort][lstCity][lstTourType][lstTour]</ParentNodesString>
<ChildNodesString />
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstDuration" Value="" Type="Nights" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_nights" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstResort][lstCity][lstTourType][lstTour]</ParentNodesString>
<ChildNodesString />
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstCategory" Value="" Type="HotelStars" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="sd_hdstars" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstResort][lstCity][lstTourType][lstTour]</ParentNodesString>
<ChildNodesString />
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstBoard" Value="" Type="Pansion" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false"
DataTextField="Name" DataValueField="SearchID" FirstItem="All" FirstItemContainer="" Sort="pn_code" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstResort][lstCity][lstTourType][lstTour]</ParentNodesString>
<ChildNodesString />
</SchemeNodeBase>
<SchemeNodeBase xsi:type="SchemeNode" Name="lstCalendarTourDates" Value="" Type="CalendarTourDates" Assembly="Megatec.MasterWeb.Loading" AutoPostBack="false"
DataTextField="Name" DataValueField="SearchID" FirstItem="" FirstItemContainer="" Sort="td_date" ParentControlName="" Bind="true">
<TypeDependencies />
<DefaultSelect xsi:type="DefaultSelection" />
<ParentNodesString>[lstDepartFrom][lstCountry][lstResort][lstCity][lstTourType][lstTour]</ParentNodesString>
<ChildNodesString />
</SchemeNodeBase>
</nodes>
<bindType>Default</bindType>
</GetFilter>
</soap:Body>
</soap:Envelope>
