< назад

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".

Схема

Форма









Некоторые Usingособенности objXmlHandlerимеют Asполя Newс Yunique.Core.UI.FormHandlerатрибутом objXmlHandler.PreferredLanguageType= ="dropdownlist". UserProperties.PrefLangТакже, objXmlHandler.PageReadOnlyданные =поля Falseимеют objXmlHandler.XmlFolderатрибут ="lookupquery"........, strXMLPath objXmlHandler.XmlFile = GridSearchSchemaFile objXmlHandler.DatabaseConnection = conConnection

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

Dim colFields As New StringCollection colFields.Add("pkiPOMLibraryID|" & "00000000-0000-0000-0000-000000000000")

objXmlHandler.ToSelectFields = colFields

Dim objControlHolder(3) As PlaceHolder

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

While objXmlHandler.GetSearchControls(Me.Request) intControlColumn = objXmlHandler.ControlColumn - 1 CreateStyleSearchControls(objXmlHandler, objControlHolder(intControlColumn)) End While

plhSearchControl.Controls.Add(New LiteralControl("

" & vbNewLine)) plhSearchControl.Controls.Add(New LiteralControl(vbTab & "" & vbNewLine))

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

plhSearchControl.Controls.Add(New LiteralControl(vbTab & "

" & vbNewLine)) plhSearchControl.Controls.Add(New LiteralControl("
" & vbNewLine))

End Using [15:14:34] Stanislav Stepanchenko: Using objXmlHandler As New Yunique.Core.UI.FormHandler objXmlHandler.PreferredLanguage = UserProperties.PrefLang objXmlHandler.XmlFolder = strXMLPath objXmlHandler.XmlFile = GridSearchSchemaFile objXmlHandler.DatabaseConnection = conConnection

Dim colFields As New StringCollection

Dim colDefault As New StringCollection objXmlHandler.ToSelectDefault = colDefault

Dim bParams As Boolean = False

While objXmlHandler.GetEditControls If objXmlHandler.ControlEnable = True Then colFields.Add(objXmlHandler.ControlName + "|" & Request.Form.Item(objXmlHandler.ControlName)) If Request.Form.Item(objXmlHandler.ControlName) String.Empty Then bParams = True End If End While

Dim strSql As String

Dim nBodySet As Integer Try nBodySet = CInt(Me._BodySet) Catch ex As Exception nBodySet = 1 End Try

If bParams = True Then strSql = objXmlHandler.GetSearchSqlCommand(colFields) & " AND POM NOT IN ( SELECT POM FROM pBodySpec WHERE BodyID = '" & Me._BodyID & "' and Bodyset = '" & CStr(nBodySet) & "' ) ORDER BY Sort, POM, PointMeasur " Else strSql = objXmlHandler.GetSearchSqlCommand(colFields) & " WHERE POM NOT IN ( SELECT POM FROM pBodySpec WHERE BodyID = '" & Me._BodyID & "' and Bodyset = '" & CStr(nBodySet) & "' ) ORDER BY Sort, POM, PointMeasur " End If

Return strSql

End Using [15:15:33] Stanislav Stepanchenko: Using objXmlHandler As New Yunique.Core.UI.FormHandler objXmlHandler.PreferredLanguage = UserProperties.PrefLang objXmlHandler.XmlFolder = strXMLPath objXmlHandler.XmlFile = strXMLFile objXmlHandler.DatabaseConnection = conConnection

objXmlHandler.ServerCulture = Me.strServerCulture objXmlHandler.ClientCulture = Me.strClientCulture objXmlHandler.ServerTimeZone = Me.strServerTimeZone

Dim colFields As New StringCollection

colFields.Add("pkiBodyID|" + BodyID)

While objXmlHandler.GetEditControls If objXmlHandler.ControlEnable = True Then strRequestQueryStringValue = (Request.Form.Item(objXmlHandler.ControlName)) If objXmlHandler.ControlType() = "checkbox" Then If strRequestQueryStringValue = "on" Then colFields.Add(objXmlHandler.ControlName + "|1") Else colFields.Add(objXmlHandler.ControlName + "|0") End If

Else colFields.Add(objXmlHandler.ControlName + "|" + Request.Form.Item(objXmlHandler.ControlName)) End If End If End While

colFields.Add("txtCUser|" & UserProperties.Fullname) colFields.Add("txtCDate|" & SystemHandler.GetGMT) colFields.Add("txtMUser|" & UserProperties.Fullname) colFields.Add("txtMDate|" & SystemHandler.GetGMT)

objXmlHandler.PerformSqlCommand(colFields, Yunique.Core.Data.SQLHelper.SqlOperationType.UPDATE) End Using