Табличные части

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

Для реализации элемента управления предназначенного редактирования табличной части необходимо унаследовать его от элемента управления BaseTablePartGridPanel и реализовать интерфейс ITablePartEditor<Т>, где Т – тип табличной части.

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

Прикладной разработчик может запросить элемент управления для редактирования табличной части документа через класс DevBookmark_Scripts DocumentHelper с помощью метода GetTablePartControl<T>, где Т – тип табличной части. Метод возвращает элемент управления для редактирования табличной части указанного типа.

Рассмотрим создание элемента управления для редактирования табличной части документа на примере табличной части Article типа документа Sale:

Example_CreateTablePart1

В проекте модуля создаем новый объект User Control, наследуем его от элемента управления BaseTablePartGridPanel (из пространства имен Ultima.Client.Controls), реализуем интерфейс ITablePartEditor<T>:

public partial class SaleArticleTablePartPanel : BaseTablePartGridPanel,

 ITablePartEditor<ArticleTablePartRow>

{

 public SaleArticleTablePartPanel()

 {

         InitializeComponent();

 }

}

Example_CreateTablePart2

Также задаем для элемента управления BaseTablePartGridPanel тип табличной части через параметр TablePartTypeArticleTablePartRow.

Для отображения данных табличной части дополнительно размещаем элемент управления GridControl библиотеки DevExpress и подключаем к нему в качестве источника данных тот же объект метаданных Ultima.Metadata.ArticleTablePartRow:

Example_CreateTablePart3

Example_CreateDictList8

Example_CreateTablePart4

Настраиваем созданный элемент управления:

Example_CreateTablePart5

По завершении компилируем проект, копируем созданные библиотеки в папку модуля в клиентском приложении Client/ClientModules/TradeTestSolution, перезагружаем метаданные и открываем форму редактирования документа:

Example_CreateTablePart6