Скрытие TcxGridLevel в TCXGrid в зависимости от значений основной записи

У меня есть TcxGrid, который состоит из основного TcxGridLevel и 2 дочерних TcxGridLevels (все из которых используют TcxGridDBTableView). Я хотел бы скрыть один из дочерних уровней в зависимости от значения значений записи основного уровня. Как мне это сделать?

1 ответ

Решение

Вот ссылка на DevExpress, описывающая, что вы хотите:

https://www.devexpress.com/Support/Center/Question/Details/Q96738

Но это имеет некоторые недостатки на мой взгляд. Сначала это довольно медленно с большими наборами данных. Во-вторых, возникает "мерцание", когда ваш главный уровень часто меняется и сетка должна быть перерисована. Возможно, можно установить фильтр для вашего набора данных деталей, чтобы детали были "пустыми", когда ваш nmaster имеет правильное условие. В TcxGrid есть свойство автоматически скрывать пустые вкладки.

Несколько вне контекста, но в случае, если ссылка снова отключится:

1) Как я могу вызвать Level3 OnGetGridView, потому что Level3 View не изменился, как я ожидал

Событие OnGetGridView вызывается только один раз, когда деталь раскрывается впервые. После того, как обработчик события был выполнен, указанный клон GridView создается и кэшируется, чтобы событие не сработало при следующем расширении той же основной записи. Если вам нужно, чтобы событие было вызвано позже, вы можете очистить все подробные клоны, вызвав метод ClearDetails основного DataController или методы ClearDetailLinkObject.

Вы можете найти эту информацию в разделе "TcxGridLevel.OnGetGridView" документации ExpressQuantumGrid.

2) Я также изменяю заголовки Level2 и Level3 для каждого показа Gridview, но это изменение не происходит автоматически, иногда необходимо закрыть подробный вид и снова открыть его, чтобы внести изменения в заголовок.

Если мы не ошибаемся, вы изменяете заголовок уровня в его обработчике события OnGetGridView. Если это так, новая подпись не применяется немедленно, потому что рисование соответствующего элемента не завершено. В качестве обходного пути вы можете выполнить "отложенную" операцию, опубликовав собственное сообщение. Я приложил пример проекта, чтобы проиллюстрировать этот подход в действии. Надеюсь, он будет служить вашим потребностям, и адаптация не будет проблемой.

Другие вопросы по тегам