< назад

FORM HANDLER

Работа с ПО, которое реализуют стратегию PLM, связано с созданием/заполнением определенных форм. Например: для поиска нужной информации, используются некоторые фильтра (пользователь выставляет параметры поиска, а затем нажимает "search"). Для реализации этой и многих других процедур, существуют определенные инструменты.

Form Handler - метод создания форм в системе YuniquePLM. Также, с помощью Form Handler можно получать SQL запросы.

Form Handler - класс библиотеки Yunique.Core.UI., по которому строятся все формы в системе. Благодаря этому методу разработчик может быстро создавать конфигурируемые веб-формы по XML схеме.

Создание объекта класса Form Handler:

 Using objXmlHandler As New Yunique.Core.UI.FormHandler *создается объект класса Handler
       objXmlHandler.PreferredLanguage = UserProperties.PrefLang *задается язык формы
       objXmlHandler.PageReadOnly = False *должна ли форма быть read only
       objXmlHandler.XmlFolder = strXMLPath *указывается папка, из которой берутся XML файлы
       objXmlHandler.XmlFile = GridSearchSchemaFile *название XML файла
       objXmlHandler.DatabaseConnection = conConnection *выставленное открытое соединение

После этого, с Handler-ом можно работать различными методами (get search controls, get edit controls): черпая информацию об объектах формы из XML схемы.
*Схема-XML файл, с главным тегом "table"; дочерние теги "column" (поля в форме, в теги "colomn" могут быть теги "validator" и "lookup table")).
В теге "table" есть различные атрибуты (ApiSQL, GridReadSQL, FormSQL), после которых следуют запросы. Эти запросы указывают место, откуда Handler извлекает нужную информацию. Так как речь идет о формах, то обратить внимание стоит на FormSQL.

XML схема

Рассмотрим поле "Description". В схеме задается имя поля в базе данных: Name="Description", а также задается имя, которое должно быть видно на форме: alias="Description". Кроме этого, есть атрибуты "type" и "datatype". В нашем случае: Type= "textbox" (тип ввода); datatype ="string" (тип данных). К основным атрибутам также относятся: "visible", "enabled", "column"и "order".

Схема

Форма

Некоторые особенности имеют поля с атрибутом Type= "dropdownlist". В этих же полях присутствует атрибут "lookupquery", который содержит запрос, извлекающий некоторые данные для списка. Обязательно указываются атрибуты: "textfield" и "valuefield" - те поля, которые выбирает запрос из источника данных в качестве значений и текста выпадающего списка. В выпадающих списках datatype = "query". Также, в теге "column" с выпадающим списком, содержится тег "LookupTable"- здесь указывается специальный XML-файл, который указывает какие данные извлекать из БД.

Dropdownlist




Создание форм с помощью Handler:

 objXmlHandler.AddPredefinedControlValue("DivisionID", _DivisionID)
objXmlHandler.AddPredefinedControlValue("SeasonYearID", _SeasonYearID)

Dim colFields As New StringCollection *создается string colection и добавляется в него строка
colFields.Add("pkiPOMLibraryID|" & "00000000-0000-0000-0000-000000000000")   *префикс pki=primary key; имя поля в БД; |& значение поля

objXmlHandler.ToSelectFields = colFields *добавка к SQL запросу

Dim objControlHolder(3) As PlaceHolder  * делается верска (control holder-строка)

objControlHolder(0) = New PlaceHolder
objControlHolder(1) = New PlaceHolder
objControlHolder(2) = New PlaceHolder

While objXmlHandler.GetSearchControls(Me.Request)  *вызывается getsearchcontrol intControlColumn = objXmlHandler.ControlColumn - 1
CreateStyleSearchControls(objXmlHandler, objControlHolder(intControlColumn))* создается физический объект
  End While

  plhSearchControl.Controls.Add(New LiteralControl("<table height='30' width='100%' bgcolor='#FFFFFF' border='0' cellspacing='0' cellpadding='0'>" & vbNewLine))   plhSearchControl.Controls.Add(New LiteralControl(vbTab & "<tr>" & vbNewLine))* верстка (таблица)

  Dim intInd As Integer
  For intInd = 0 To 2
plhSearchControl.Controls.Add(objControlHolder(intInd))
  Next

  plhSearchControl.Controls.Add(New LiteralControl(vbTab & "</tr>" & vbNewLine))
  plhSearchControl.Controls.Add(New LiteralControl("</table>" & vbNewLine))

End Using

В системе YuniquePLM можно один выпадающий список фильтровать по другому в списку. Например: можно связать StyleType с Division. Реализуется это в XML файле:

Фильтрация StyleType по Division

Тег "column" с полем StyleType имеет атрибуты: "LinkedCol" и "lookupquery". У нас LinkedCol="DivisionID". Атрибут "lookupquery" содержит соответствующий запрос, который извлекает StyleTypeID в зависимости от выбранного DivisionID. Так, выбрав "Yunique Accessories" в Division, мы можем выбрать только "Accessory" в Style Type.

С помощью Handler можно обрабатывать результаты SQL запросов...