Элемент управления "RowChooseBox"
Элемент управления RowChooseBox
предназначен для выбора значения из указанной в настройках элемента секции справочника. Соответствует элементу управления Значение из справочника
Конструктора разметок.
RowChooseBox
содержит следующие функциональные кнопки:-
… — открывает окно выбора строки справочника.
-
X — очищает результат выбора.
Свойства
-
ActivateParams
— параметры активации справочника (см. Параметры активации справочников). -
ReferenceCardTypeId
— идентификатор (типа) справочника, из которого осуществляется выбор. -
ReferenceSectionTypeId
— идентификатор секции справочника, содержащего данные для выбора.
События
-
CustomChoosingValue
— событие вызывается при открытии окна поиска. Позволяет изменить механизм выбора значения за счет изменения:-
e.Search
— флаг, показывающий, что это быстрый поиск, т.е. не надо показывать окно выбора значения из справочника, вместо этого надо найти все значения поText
и дать выбрать из них. -
e.Chosen
— еслиtrue
, то считается, что значение было выбрано. -
e.ValueId
— идентификатор выбранной строки (RowId
).
-
-
CustomizeSearchQuery
— событие срабатывает при выполнении быстрого поиска. Позволяет изменить поисковый запрос, результаты которого отображаются при вводе текста.См. дополнительную информацию в описании
CustomizeSearchQuery
в пункте Элемент управленияCommunicativeChooseBox
.Например. Нужно ограничить поиск по определённому типу записи при выборе значения из Конструктора справочников.
Для этого достаточно добавить условие к существующему поисковому запросу:private void MyUniversalChooseBox_CustomizeSearchQuery(object sender, CustomizeSearchQueryEventArgs e) { if (ItemTypeId != Guid.Empty) { e.SectionQuery.ConditionGroup.Conditions.AddNew(RowDataFields.ParentRow, FieldType.UniqueId, ConditionOperation.Equals, ItemTypeId); } }
-
CustomTextValue
— событие вызывается перед преобразованием идентификатора выбранной строки справочника в текст. Позволяет установить любой текст по выбранному значению.К примеру, для отображения в элементе управления полного названия организации контрагента (при его выборе) обработчик события может быть следующим:
private void Sender_CustomTextValue(System.Object sender, CustomTextValueEventArgs e) { RowChooseBox control = sender as RowChooseBox; if (control.Value = Guid.Empty) (1) return; PartnersCompany company = CardControl.ObjectContext.GetObject<PartnersCompany>(control.Value); (2) if (company = null) return; e.CustomData.Text = company.FullName; (3) }
1 Проверка факта выбора. 2 Получение организации контрагента. 3 Присвоение отображаемого значения. Данное событие не сработает до завершения загрузки карточки. Если нужно поддержать обработку на более раннем этапе, добавьте в
CardActivated
код вида:public override void CardActivated(CardActivatedEventArgs e) { ICustomizableControl customizable = CardControl; ILayoutPropertyItem senderItem = customizable.FindPropertyItem<ILayoutPropertyItem>("Sender"); (1) senderItem.ControlValue = senderItem.ControlValue; }
1 Sender
— название элемента управления типаRowChooseBox
.Пример инициализацииRowChooseBox
с возможностью выбора сотрудника из справочника сотрудников:protected override void OnCardInitialized(EventArgs e) { base.OnCardInitialized(e); InitializeComponent(); (1) this.rowChooseBox.CardInstanceId = Guid.Empty; this.rowChooseBox.ReferenceCardTypeId = new Guid("6710B92A-E148-4363-8A6F-1AA0EB18936C"); this.rowChooseBox.ReferenceSectionTypeId = new Guid("DBC8AE9D-C1D2-4D5E-978B-339D22B32482"); }
1 Начало инициализации — стандартное.