ObjectListView
не содержит никакой функциональности по действиям (создание, сохранение и т.д.) с объектами данных, отображаемыми в списке. Программист должен написать код, «ловящий» события, происходящие в ObjectListView
, и отрабатывающий соответствующую реакцию. Наоборот, если в программе произошло некоторое действие, необходимо сообщить о нём ObjectListView
для адекватного отображения объектов.
Для перехвата событий, необходимо:
- Повесить обработчик на событие
CreateObject
при реализации действий по созданию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку создания объекта; - Повесить обработчик на событие
EditObject
при реализации действий по редактированию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку редактирования объекта; - Повесить обработчик на событие
DeleteObject
при реализации действий по созданию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку удаления объекта;
Для информирования ObjectListView
о произошедших действиях, необходимо:
- Вызвать метод
AddObject
, если объект данных был добавлен, он отобразится вObjectListView
(Важно! Вызов до обработки объекта данных сервисом данных приведет к ошибке, т.к.ObjectListView
попытается прочитать объект данных из хранилища, где его ещё нет); - Вызвать метод
UpdateObject
, если объект данных был изменён, тогда поля вObjectListView
поменяют значения на соответствующие в объекте данных; - Вызвать метод
DeleteObject
, если объект данных был удалён, тогда он исчезнет изObjectListView
.
События загрузки списка
Информация о загрузке списка
В обработчике события ОbjectListView.AfterFillData
существует возможность получить информацию об успешности загрузки. В качестве параметра события вместо типа EventArgs
передается его наследник AfterFillDataEventArgs
.
Тип AfterFillDataEventArgs
имеет три свойства:
/// <summary>
/// Исключение, произошедшее во время загрузки
/// </summary>
public Exception Exception { get; private set;}
/// <summary>
/// Загрузка отменена пользователем
/// </summary>
public bool CanceledByUser { get; private set; }
/// <summary>
/// Загрузка успешно завершена
/// </summary>
public bool IsFillSuccessfullyCompleted { get; private set; }
Пример:
private void objectListView1_AfterFillData(object sender, EventArgs e)
{
if (e is AfterFillDataEventArgs)
{
var afterFillDataEventArgs = e as AfterFillDataEventArgs;
MessageBox.Show(
string.Format("CancelByUser: {0}, Exception: {1}, IsFillSuccessfullyCompleted: {2} ",
afterFillDataEventArgs.CanceledByUser, afterFillDataEventArgs.Exception, afterFillDataEventArgs.IsFillSuccessfullyCompleted));
}
}
Отслеживание окончания загрузки данных
Отследить окончание загрузки данных в ObjectListView
возможно с помощью события AfterFillData
и свойства IsDataLoaded
. Событие AfterFillData
происходит при окончании загрузки, а свойство IsDataLoaded
принимает истинное значение, в случае если данные загружены и ObjectListView
не находится в состоянии обновления.
Состояние списка
Выделение строки
Отследить изменение состояния строки (выделена или нет) у ObjectListView
возможно с помощью события MarkObjectChanged
. В качестве аргумента события передается DataObjectDef
объекта и состояние строки.
public event MarkObjectChangedEventHandler MarkObjectChanged;
ObjectListView
не содержит никакой функциональности по действиям (создание, сохранение и т.д.) с объектами данных, отображаемыми в списке. Программист должен написать код, «ловящий» события, происходящие в ObjectListView
, и отрабатывающий соответствующую реакцию. Наоборот, если в программе произошло некоторое действие, необходимо сообщить о нём ObjectListView
для адекватного отображения объектов.
Для перехвата событий, необходимо:
- Повесить обработчик на событие
CreateObject
при реализации действий по созданию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку создания объекта; - Повесить обработчик на событие
EditObject
при реализации действий по редактированию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку редактирования объекта; - Повесить обработчик на событие
DeleteObject
при реализации действий по созданию объекта данных, событие происходит, когда пользователь нажимает в панели инструментов кнопку удаления объекта;
Для информирования ObjectListView
о произошедших действиях, необходимо:
- Вызвать метод
AddObject
, если объект данных был добавлен, он отобразится вObjectListView
(Важно! Не вызывайте данный метод до обработки объекта данных сервисом данных, поскольку это может вызвать ошибку, т.к.ObjectListView
попытается прочитать объект данных из хранилища, где его ещё нет); - Вызвать метод
UpdateObject
, если объект данных был изменён, тогда поля вObjectListView
поменяют значения на соответствующие в объекте данных; - Вызвать метод
DeleteObject
, если объект данных был удалён, тогда он исчезнет изObjectListView
.
Отображение подсказки для отдельных строк
В ObjectListView
реализована возможность отображения подсказки для отдельных строк.
Для включения данного режима необходимо установить свойство ObjectListView.ShowToolTip
.
Для задания текста подсказки необходимо обработать событие ObjectListView.BeforeToolTipRequired
. Для настройки параметров отображения подсказки (задержки появления, длительности отображения внешнего вида) следует изменить свойства объекта ObjectListView.ToolTip
.
Пример:
В данном примере выводится подсказка к ячейкам первых 5-ти столбцов.
private void objectListView1_BeforeToolTipRequired(object sender, BeforeToolTipRequiredEventArgs e)
{
e.TipText = string.Format("Строка {0}, столбец {1}", e.Row, e.Column);
if (e.Column>5)
e.Cancel = true;
}
Дополнительные события, свойства и методы
OnChangeCurrentObject
— происходит, когда пользователь выбирает объект (перемещает курсор) в списке.ObjectDblClick
— gроисходит, когда на текущем объекте выполненDblClick
.ObjectCount
— получить количество объектов в списке.GetObject
— получение объекта данных непосредственно из списка по различным критериям.FillData
— заполнение списка данными (обновление).HideToolBar
— показать/спрятать тулбар.UseToolBar
— использовать нестандартный тулбар, какой-то другой, снаружи, на него автоматически «намазываются» кнопки отObjectListView
.ClearCache
— очистка внутреннего кеша.ObjectListView.BeforeRefresh
- происходит перед обновлением данных в списке. Обновление данных может быть инициировано нажатием пользователем кнопки «Обновить» или вызовом методаRefresh
.SetObject
- метод для добавления объекта в список.SetObjects
- метод для добавления нескольких объектов в список.