Элемент управления DictionaryLookupEdit (из пространства имен Ultima.Client.Controls) исполняет функционал стандартного элемента управления ComboBox и элемента управления ComboBoxEdit пакета DevExpress. Используется для выбора записи плоского справочника:
Элемент управления обладает следующими специфичными свойствами:
•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):
•IDEditWidth – общая ширина блока, включающего поле (1) и кнопки (2), (3);
•LookupButtonVisible – в значении true отображается кнопка, по которой раскрывается список элемента управления (2);
•NewButtonVisible – в значении true отображается кнопка, открывающая форму создания новой записи справочника (6);
•SelectButtonEnable – в значении true кнопка открытия списковой формы справочника для выбора записи (3), если она отображается в элементе управления, доступна для нажатия;
•SelectButtonVisible – в значении true отображается кнопка открытия списковой формы справочника для выбора записи (3);
•ShowColumnHeaders – в значении true отображаются заголовки колонок в списке записей справочника в элементе управления.
На функционал и внешний вид DictionaryLookupEdit влияют следующие свойства справочников:
•Is small – по умолчанию для маленьких справочников, с установленным флагом Is small, недоступен функционал поиска. Но при этом в элемент управления при открытии попадает выборка всех записей справочника; |
По умолчанию записи больших справочников при первом открытии в элемент управления не попадают. Для их отображения необходимо воспользоваться поиском, ограничивающим выборку; |
•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.