Элемент управления "RowChooseBox"

Элемент управления RowChooseBox предназначен для выбора значения из указанной в настройках элемента секции справочника. Соответствует элементу управления Значение из справочника Конструктора разметок.

Элемент управления "RowChooseBox"
Рисунок 1. Элемент управления "RowChooseBox"
RowChooseBox содержит следующие функциональные кнопки:
  • …​ — открывает окно выбора строки справочника.

  • X — очищает результат выбора.

Свойства

  • ActivateParams — параметры активации справочника (см. Параметры активации справочников).

  • ReferenceCardTypeId — идентификатор (типа) справочника, из которого осуществляется выбор.

  • ReferenceSectionTypeId — идентификатор секции справочника, содержащего данные для выбора.

Методы

  • ChooseValue — открывает окно выбора элемента из справочника.

События

  • 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 Начало инициализации — стандартное.