GRID HANDLER
Программное обеспечение для управления жизненным циклом продукта содержит таблицы. Для построения таблиц в YuniquePLM используется Grid Handler.
Grid Handler - класс библиотеки Yunique.Core.UI. Данный класс применяется для добавления DataGrid-ов, с его помощью строятся таблицы в системе по XML схеме.
Схема-XML файл со структурой таблицы:
- главный тег <table>;
- дочерние теги <column>;
- внутри тега <column> могут быть теги: <validator> и <lookup table>.
В теге <table> есть различные атрибуты (ApiSQL, GridSQL, GridReadSQL, FormSQL), в которых содержатся запросы. Эти запросы используются классом, чтобы извлечь информацию для таблиц. Так как речь идет о DataGrid, то обратить внимание стоит на GridSQL/GridReadSQL (эти атрибуты содержат SQL запросы к БД, чтобы передать полученные данные в Grid).

Для примера рассмотрим поле "Status" из таблицы Style Header во Flash Edit. В схеме задается имя поля в базе данных: Name="CustomField3", а также задается имя, которое должно быть видно в таблице: alias="Status". Кроме этого, есть атрибуты "type" и "datatype". В нашем случае: Type= "dropdownlist" (выпадающий список); datatype ="query" (тип данных). Атрибут "lookupquery" содержит запрос, извлекающий некоторые данные для списка. К основным атрибутам также относятся: "visible", "enabled", "column" и "order".

Создание GridHandler:
  Public Sub LoadDataGrid(ByVal boundColumns As Boolean)
  Dim strSortOrder As String = ""
  Dim oDt As DataTable
Using dstXmlData As New DataSet()   dstXmlData.ReadXml(String.Format("{0}\{1}", Me.strXMLPath, strPlanningFlashEditGridXML), XmlReadMode.InferSchema)
  Using objDataGridBasics As New Yunique.Core.UI.DataGridHandler()  *создается объект класса GridHandler
Me.DataGrid1.AllowPaging = True
Me.DataGrid1.AllowCustomPaging = True
Me.DataGrid1.VirtualItemCount = ResultCount
objDataGridBasics.PageSize =Convert.ToInt32(Me.ps.SelectedValue) *количество записей на странице
objDataGridBasics.FormName = strPlanningFlashEditGridXML *имя XML файла, которая предназначена для этого grid-а
objDataGridBasics.GridReadOnly = False   *не read only (будут textbox, dropdown)
objDataGridBasics.DatabaseStringConnection = Me.strConnection *строка подключения к БД
objDataGridBasics.XmlData = dstXmlData  *dataset, который строится на основании XML
objDataGridBasics.IsPostBack = IsPostBack
objDataGridBasics.SortOrder = strSortOrder   * параметр сортировки
objDataGridBasics.PreferredLanguage = UserProperties.PrefLang *язык grid-а  If boundColumns = True Then   *отрисовка столбцов   objDataGridBasics.BoundMainGridColumns(Me.DataGrid1)
  End If
objDataGridBasics.DataGridTable = oDt  *таблица данных (выборка из БД)
objDataGridBasics.BindDataTableGrid1(Me.DataGrid1)
  End Using
  End Using
  End Sub
Данный класс позволяет решить следующую задачу: когда отрисовывается DataGrid, иногда, возникает необходимость в зависимости от значения одного поля - блокировать для ввода другие поля. Другими словами, Grid Handler позволяет реализовать "Lock Field Functionality".
objDataGridBasics.LockingID = strLockingID  *задаётся уникальный ID для поля
objDataGridBasics.SecurityLockField = True  *вкл/выкл lockfield functionality
сохранение*сохранение с помощью Form Handler