Элемент управления BaseTablePartGridPanel (из пространства имен Ultima.Client.Controls) используется для отображения и редактирования содержимого табличных частей в форме редактирования документа. Он состоит из:

панели инструментов (1);

таблицы записей табличной части (2) – элемента управления GridControl пакета DevExpress. Редактирования записей можно осуществлять непосредственно в таблице:

Control_BaseTablePartGridPanel

Элемент управления обладает следующими специфичными свойствами:

TablePartType – табличная часть, с данными которой работает элемент управления;

AutoPopulateGridColumns – в значении true колонки таблицы (GridControl) (2) создаются автоматически для всех свойств привязанной к элементу управления табличной части. В значении false используются колонки, созданные прикладным разработчиком;

CanDragToolbar – в значении true позволяет изменять положение панели инструментов (1);

DeleteButtonEnabled – в значении true кнопка удаления записей табличной части (5), если она отображается в панели инструментов, доступна для нажатия. Свойство выставляется автоматически в зависимости от прав пользователя, открывающего форму редактирования документа;

DeleteButtonVisible – в значении true отображается кнопка удаления записей табличной части (5);

EditButtonEnabled – в значении true кнопка редактирования записей табличной части (6), если она отображается в панели инструментов, доступна для нажатия. Свойство выставляется автоматически в зависимости от прав пользователя, открывающего форму редактирования документа;

EditButtonVisible – в значении true отображается кнопка редактирования записей табличной части (6);

GroupButtonVisible – в значении true отображается кнопка открытия/сокрытия панели группировки (7);

GroupPanelVisible – в значении true под панелью инструментов (1) отображается панель группировки:

Control_BaseTablePartGridPanel2

NewButtonEnabled – в значении true кнопка создания новой записи табличной (4), если она отображается в панели инструментов, доступна для нажатия. Свойство выставляется автоматически в зависимости от прав пользователя, открывающего форму редактирования документа;

NewButtonVisible – в значении true отображается кнопка создания новой записи табличной части (4);

NewInlineButtonEnabled – в значении true кнопка создания новой пустой строки в таблице (GridControl) элемента управления (3), если она отображается в панели инструментов, доступна для нажатия. Свойство выставляется автоматически в зависимости от прав пользователя, открывающего форму редактирования документа;

NewInlineButtonVisible – в значении true отображается кнопка создания новой пустой строки в таблице (GridControl) элемента управления (3);

ToolbarVisible – в значении true отображается панель инструментов (1).

При использовании элемента управления помимо указания типа табличной части TablePartType в его свойствах, необходимо привязать табличную часть того же типа к входящему в его состав элементу управления GridControl. Причем сделать это следует через источник данных формы редактирования документа, в котором следует выбрать соответствующую табличную часть:

Control_BaseTablePartGridPanel3

DevBookmark_Scripts Класс элемента управления BaseTablePartGridPanel обладает следующими свойствами:

TablePartType, типа type – возвращает тип табличной части;

Selection, типа IDList – возвращает список идентификаторов выбранных в элементе управления строк табличной части.

Элемент управления BaseTablePartGridPanel можно как непосредственно разместить на форме редактирования документа, так и реализовать на базе него собственный элемент управления табличной части. Второй способ предпочтительнее в случае, когда функционала базовой формы редактирования документа в целом достаточно, а модернизировать необходимо только табличную часть.

Наиболее частая причина создания собственного элемента управления табличной части – реализация какой-либо дополнительной нестандартной логики. Поэтому в собственном элементе управления, унаследованном от BaseFlatDictionaryListForm, будет размещена только панель инструментов (1). Таблицу (Grid) для отображения записей табличной части (2), например, элемент управления GridControl пакета DevExpress, прикладной разработчик должен разместить самостоятельно.

Control_BaseTablePartGridPanel4

Для реализации собственного элемента управления табличной части необходимо унаследовать его от элемента управления BaseTablePartGridPanel и реализовать интерфейс ITablePartEditor<T>, где Т – тип табличной части. Система для показа табличной части будет искать элемент управления, реализующий интерфейс ITablePartEditor<T>. Если в системе не окажется ни одного такого элемента управления, откроется базовая табличная часть документа. Если в системе окажется более одного такого элемента управления, то система выдаст ошибку. Это позволяет избежать неочевидного поведения системы при ошибке настройки системы администратором. Подробно процесс создания собственной списковой формы справочника описан в главе Табличные части.