Ваш браузер устарел, не поддерживает современные веб-стандарты и представляет угрозу Вашей безопасности. Для комфортной работы с порталом, пожалуйста, установите современыый браузер.
Портал технической поддержки

Фильтрация строк при выборе из справочника

С ответом

Комментарии

Комментариев: 10

  • Официальный комментарий

    Есть только фильтр по узлам.

    По значениям можно, разве что, ограничить в быстром поиске, для показа формы с заранее заданным набором значений, эту форму надо делать самостоятельно.

    Действия с комментариями Постоянная ссылка
  • Этого и опасались))

    Спасибо Евгений.

    0
    Действия с комментариями Постоянная ссылка
  • Забыл написать - для ограничения быстрого поиска в элементе управления для выбора значения из справочника используем событие CustomizeSearchQuery.

    В поисковый запрос в данном событии достаточно добавить требуемое условие поиска.

    1
    Действия с комментариями Постоянная ссылка
  • Это событие для RowChooseBox, а у нас Данные вносятся в таблицу. У ITableControl есть аналогичное событие? 

    0
    Действия с комментариями Постоянная ссылка
  • Там только переопределять контрол выбора целиком.

    0
    Действия с комментариями Постоянная ссылка
  • А у Вас есть примеры подобного переопределения? Переопределить нужно контрол выбора Конструктора справочников?

    0
    Действия с комментариями Постоянная ссылка
  • https://docsvision.zendesk.com/hc/ru/community/posts/203457784

    - тут статья, как переопределить контрол для столбца в таблице.

    В данном случае можем использовать, н-р, RepositoryItemComboBox с фиксированным набором значений, общую информацию об использовании произвольных элементов редактирования в GridControl смотрите на сайте DevExpress.

    1
    Действия с комментариями Постоянная ссылка
  • Хорошо, спасибо большое Евгений!

    0
    Действия с комментариями Постоянная ссылка
  • Здравствуйте Евгений. Спасибо за статью, занятная вещь.

    RepositoryItemComboBox работает немного не так, как хотелось бы. Использовали RepositoryItemLookUpEdit, в целом получилось тоже самое. что и в статье, только у нас в ValueMember лежит Guid строки Конструктора справочника. И работает как надо.

    Кроме одного момента: при открытии карточки в столбце с кастомным контролом поля пусты (значения введены, но не отображаются). Если выбрать помещение то его название появится в поле.

    private void FillRoomsLists()
    {
    roomsListFiltred = new List<RoomComboItem>();
    roomsListAll = new List<RoomComboItem>();

    LookUpColumnInfo columnInfo = new LookUpColumnInfo("RoomName", null);

    riLookUpRooms = new RepositoryItemLookUpEdit();
    riLookUpRooms.NullText = "<Не выбрано>";
    riLookUpRooms.DisplayMember = "RoomName";
    riLookUpRooms.ValueMember = "RoomID";
    riLookUpRooms.ShowFooter = false;
    riLookUpRooms.ShowHeader = false;
    riLookUpRooms.Columns.Clear();
    riLookUpRooms.Columns.Add(columnInfo);

    // Получаем все помещения из Конструктора справочников
    RowData roomsItemsTypeRowData = this.Session.CardManager.GetCardData(RefBaseUniversal.ID).Sections[RefBaseUniversal.ItemTypes.ID].GetRow(new Guid("86904A8C-E3D5-4BA7-95DC-4F4B9FF900F8"));
    RowDataCollection allRooms = roomsItemsTypeRowData.ChildSections[RefBaseUniversal.Items.ID].Rows;

    RowDataCollection filtredRoomsCollection = allRooms;
    foreach(RowData room in allRooms)
    {
    CardData roomCard = GetCardBaseUniversalItem(room.Id);
    if((bool)roomCard.Sections[CardBaseUniversalItem.MainInfo.ID].FirstRow.GetBoolean("WithoutOwner"))
    roomsListFiltred.Add(new RoomComboItem(room.GetString("Name"), room.Id));
    roomsListAll.Add(new RoomComboItem(room.GetString("Name"), room.Id));
    }
    riLookUpRooms.DataSource = roomsListAll;

    // Получили контрол таблицы
    object checkGridControl = customizable.LayoutControl.GetControlByName("Rooms");
    // Вытащили из него GridExView
    GridExView checkGridView = (GridExView)checkGridControl.GetType().GetProperty("GridView").GetValue(checkGridControl, null);

    // Привязка Editor-а к столбцу Помещение
    checkGridView.Columns.ColumnByName(checkGridView.Columns[1].Name).ColumnEdit = riLookUpRooms;

    // Назначаем список по значению CheckBox-а
    SetDataSourseRiLookUpRooms((bool)customizable.FindPropertyItem<ILayoutPropertyItem>("WithoutOwner").ControlValue);
    }

    Может знаете в чем дело?

     

    0
    Действия с комментариями Постоянная ссылка
  • Подозреваю, что какие-то особенности DevExpress.

    https://www.google.com/search?q=gridex+RepositoryItemLookUpEdit+not+showing+on+load&rlz=1C1GCEU_ruRU823RU825&oq=gridex+RepositoryItemLookUpEdit+not+showing+on+load&aqs=chrome..69i57j33l2.5809j0j4&sourceid=chrome&ie=UTF-8

    - вот такой запрос много похожих проблем выдает.

    0
    Действия с комментариями Постоянная ссылка

Войдите в службу, чтобы оставить комментарий.