Элемент управления DictionaryLookupEdit (из пространства имен Ultima.Client.Controls) исполняет функционал стандартного элемента управления ComboBox и элемента управления ComboBoxEdit пакета DevExpress. Используется для выбора записи плоского справочника:

Control_DictionaryLookupEdit

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

AllowClear – в значении true отображается кнопка, сбрасывающая выбранные в элементе управления значения (7);

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

EditButtonEnable – в значении true кнопка открытия формы редактирования выбранной записи (5), если она отображается в элементе управления, доступна для нажатия;

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

FilterPanelVisible – в значении true отображается панель фильтрации (9);

ForceLoadDictionary – в значении true в элементе управления отображается весь список записей справочника независимо от его размера (его свойства IsSmall);

ForceShowSearchPanel – в значении true отображается панель поиска (8) независимо от размера справочника (его свойства IsSmall);

IDEditAutoWidth – в значении true (по умолчанию) ширина поля (1) IDEditWidth трактуется, как минимальная ширина поля (включая кнопки (2) и (3)). При этом, если вводимый идентификатор не помещается в поле (1), ширина поля автоматически увеличивается соответственно размерам вводимого номера;

IDEditVisible – в значении true отображается поле кода записи (1). В значении false кнопки (2) и (3) смещаются направо за поле (4):

Control_DictionaryLookupEdit3

IDEditWidth – общая ширина блока, включающего поле (1) и кнопки (2), (3);

LookupButtonVisible – в значении true отображается кнопка, по которой раскрывается список элемента управления (2);

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

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

SelectButtonVisible – в значении true отображается кнопка открытия списковой формы справочника для выбора записи (3);

ShowColumnHeaders – в значении true отображаются заголовки колонок в списке записей справочника в элементе управления.

На функционал и внешний вид DictionaryLookupEdit влияют следующие свойства справочников:

Is small – по умолчанию для маленьких справочников, с установленным флагом Is small, недоступен функционал поиска. Но при этом в элемент управления при открытии попадает выборка всех записей справочника;

Control_DictionaryLookupEdit1

По умолчанию записи больших справочников при первом открытии в элемент управления не попадают. Для их отображения необходимо воспользоваться поиском, ограничивающим выборку;

Control_DictionaryLookupEdit2

Display format – определяет формат, в котором в поле (4) элемента управления будут отображаться выбранная запись Для приведенного в примере справочника валют значение этого параметра "{Name} {AlphaCode} ({NumCode})". Если значение Display format не задано, формат будет сформирован из значений всех свойств справочника, кроме свойств типа LargeText и byte[];

Search property – определяет, по какому свойству справочника будут производится поиск. Для приведенного в примере справочника валют значение этого параметра "Name". По этому же параметру производится фильтрация;

Lookup – атрибут свойств справочника – определяет, что свойство справочника будут отображаться в выпадающем списке элемента управления (идентификатор записи справочника ID отображается всегда). Если ни одно из свойств справочника не помечено этим атрибутом, в список попадут свойства, перечисленные в Display format. Если Display format также пуст – в списке элемента управления выводятся все свойства, кроме свойств типа LargeText и byte[];

При создании новой записи справочника нажатием на кнопку (6) можно, при необходимости, задать ее начальные значения, отреагировав на событие InsertRecord. Можно либо подставить параметры для новой записи, чтобы элемент управления в дальнейшем обрабатывал их самостоятельно:

private void MyLookupEdit_InsertRecord(object sender, InsertRecordEventArgs args)

{

 args.Parameters["Name"] = "YourText";

}

Либо создать запись и вернуть элементу управления ее код, чтобы он его использовал:

private void MyLookupEdit_InsertRecord(object sender, InsertRecordEventArgs args)

{

 args.Handled = true// это существенно!

 args.InsertedRecordID = DictionaryHelper.InsertRecord<DictionaryName>(args.Parameters);

}

Об успешном создании записи извещает событие RecordCreated.

Аналогично можно поступить и при редактировании открытой в элементе управления записи справочника нажатием на кнопку (5), отреагировав на событие EditSelectedRecord.