Элемент управления "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 Начало инициализации — стандартное.