Доступ к подчиненным карточкам из карточки BackOffice

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

  • SaveChildCardOnClosing — задаёт или возвращает признак сохранения подчиненных карточек при их закрытии. Если значение true, то при закрытии подчиненной карточки изменения будут сохранение автоматически без запроса на сохранение.

  • ChildCardActivated — событие, которое срабатывает при активации компонента какой-либо подчиненной карточки.

  • OnChildCardActivated(ActiveChildCardEventArgs) — обработчик события активации подчиненной карточки.

  • GetChildCardIds — возвращает список идентификаторов подчиненных карточек.

  • ActivateChildCard(Guid) — активирует подчиненную карточку по её идентификатору.

  • GetActivatedChildCards — возвращает массив компонентов активированных карточек. Активированной считается карточка, компонент которой был загружен в память, при этом сама карточка может быть закрыта.

Ниже приведён пример, в котором в подчиненной карточке (должна быть активирована) устанавливается значение поле типа "Дата/Время":

private void GetActiveCardId_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
 ICardView cardView = (this.CardControl as ICardView); (1)

 BaseCardControl cardControl = cardView.GetActivatedChildCards()[0]; (2)

 ICustomizableControl customizable = cardControl;
 ILayoutPropertyItem registrationDate = customizable.FindPropertyItem<ILayoutPropertyItem>("CreationDate");
 registrationDate.ControlValue = DateTime.Now.AddDays(-1); (3)
 registrationDate.Commit();
}
1 Получаем интерфейс ICardView компонента карточки "Задание".
2 Получаем компонент первой подчиненной карточки (должна быть активирована).
3 Получаем элемент управления и изменяем дату.
Следующий код активирует первую (по списку) дочернюю карточку задания:
private void ActivateCard_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
 ICardView cardView = (this.CardControl as ICardView); (1)

 Guid cardId = (this.CardControl as ICardView).GetChildCardIds()[0]; (2)

 cardView.ActivateChildCard(cardId); (3)
}
1 Получаем интерфейс ICardView компонента карточки Задание.
2 Получаем идентификатор первой дочерней карточки.
3 Активируем карточку.