Описание, основная функциональность, обновление списков, обработка и оптимизация загрузки списка

Для отображения на форме списка объектов существует специализированный элемент управления, ObjectListView.

Список объектов может быть сгенерирован на основе модели Flexberry Desinger или создан вручную.

Для отображения списока объектов без генерации необходимо:

  • Поместить ObjectListView на форму.
  • Присоединить к ObjectListView сервис данных. Для этого проинициализировать у ObjectListView свойство DataService. Если на форме уже реализованы сервисы данных, то указать можно в окне редактирования свойств, где есть для этого выпадающий список.
  • Настроить отладочный пакет (если есть необходимость).
  • Выбрать один или несколько классов для отображения. Для этого проинициализировать у ObjectListView свойство DataObjectTypes. Это можно также сделать при помощи специального дизайнера, доступного из окна редактирования свойств.
  • Выбрать совместимое со всеми классами представление. Для этого необходимо проинициализировать у ObjectListView свойство ViewName. Это также можно сделать из окна редактирования свойств. Внимание! В выпадающий список попадают только совместимые со всеми типами, перечисленными в DataObjectTypes, представления.
  • Установить, при необходимости, ограничение. Для этого проинициализировать свойство LimitFunction. Если делать в среде VS из окна редактирования свойств, то через свойство Limit.
  • Настроить при необходимости видимость и ширину колонок. Для этого настроить у ObjectListView свойство Columns через окно редактирования свойств.

Основная функциональность ObjectListView для пользователя

ObjectListView отображает разнотипные объекты в одном списке в соответствии с совместимым представлением. Кроме атрибутивного состава, согласно представлению, ObjectListView может отображать картинки (Image), приписанные классам данных.

Основная функциональность ObjectListView для пользователя:

Пример

Пользователь может:

  • Просматривать список объектов (в т.ч. и разнотипных)
  • Обновить список объектов Пример

  • Вернуть выбранные объекты (LookUp) Пример

  • Выполнять сортировку объектов, для чего необходимо ткнуть мышью в заголовок колонки
  • Создать объект (если DataObjectTypes содержит несколько типов, то пользователь может из выпадающего списка выбрать, какого типа необходимо создать объект) Пример

  • Создать объект на основе выделенного Пример
  • Отредактировать один или несколько выделенных объектов Пример
  • Удалить один или несколько выделенных объектов Пример
  • Настроить видимость колонок (пользователь может скрыть часть колонок для удобства) Пример
  • Наложить ограничение на список отображаемых объектов Пример
  • Выполнить поиск по списку Пример

Также пользователю доступны:

  • Предварительный просмотр печати списка Пример
  • Печать списка Пример
  • Настройки печати Пример
  • Копирование выделенного в буфер обмена Пример
  • Операции с пометками и выделением Пример

Обновление рабочего стола

Для принудительного обновления дерева папок и списка рабочего стола необходимо вызвать метод DesktopCtrl.ReloadDesktopcustomizer().

Сообщение о продолжении загрузки при нехватке ресурсов

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

Пример

Для включения данной функции необходимо присвоить свойству ‘‘MemoryTimeLoadLimit’’ любое положительное значение.

Оптимизация чтения данных

В обычном режиме ObjectListView зачитывает все поля, находящиеся в представлении, даже если некоторые колонки скрыты. SQL Server при выполнении запроса руководствуется полями входящими в самый верхний запрос (при их вложении) и ограничением. Если поле мастера не используется ни в списке выводимых, ни в ограничении, то SQL Server не выполняет join, тем самым ускоряя ограничение запроса.

Установка свойства ObjectListView.UseColumnOptimization=true позволяет не включать в запрос скрытые поля.

Установить режим оптимизации для всех списков приложения позволяет метод Tuner.Customize, в котором следует установить свойство UseColumnOptimization для ObjectListView, переданного в качестве параметра.

Отключение хоткей F2 для редактирования объектов

Нужно в ObjectListView указать UseHotkeyForEdit = false;. Это повлияет и на тултип, который появляется над кнопкой редактирования.

Полезные ссылки