Настройка ширины столбцов
Делается аналогично WebObjectListView.
Сохранение объектов
У AGE есть элемент под названием Status
, который отражает редактировался объект или нет, т.е. начинал ли пользователь что-либо вводить.
Когда пользователь начинает вводить что-либо в строчку AGE, то рядом с кнопками в строке появляется индикатор ☀ - звездочка:
Это нужно для того, чтобы при нажатии на кнопку сохранить на странице (не в AGE) можно было предупредить пользователя, что он не сохранил данные в AGE. Если разрабатывается собственный контрол и встраивается в AGE, то для поддержки данного функционала следует реализовать контролу интерфейс IGroupEditCompatible
.
Редактирование списка детейлов
Строки детейла можно редактировать с формы редактирования элемента: в текущем окне, в новом окне и в модальном окне. Настройка данных операций производится аналогично подобному в WebObjectListView.
protected override void PostApplyToControls()
{
// В новом или модальном окне.
ctrlКвартира.DetailEditForm = КвартираE.FormPath;
ctrlКвартира.Operations.OpenEditorInModalWindow = false(true);
ctrlКвартира.Operations.OpenEditorInNewWindow = true(false);
// В текущем окне.
// Формирование URL формы редактирования детейла с ReturnUrl для возврата к этой (текущей) форме.
ctrlКвартира.DetailEditForm = FormUrlHelper.UpdateParam(
WebParamController.ReturnURL,
FormUrlHelper.RedirectEditFormUrl(Page.ResolveUrl(FormPath), DataObject.__PrimaryKey.ToString()),
// КвартираE - форма редактирования детейла.
КвартираE.FormPath);
}
Особенности открытия формы редактирования в отдельной вкладке в AGE
Если форма редактирования открывается в отдельной вкладке (OpenEditorInNewWindow=1, OpenEditorInModalWindow=0), детейл можно редактировать и на вкладке с AGE, и на странице редактирования. Исключить параллельное редактирование, например, блокировкой строки в AGE пока открыта другая вкладка.
Смена представления в зависимости от состояния агрегатора
Иногда необходимо отображать представления детейла с разными настройками для одного и того же агрегатора в разных состояниях. Например, при отмеченном/неотмеченном чекбоксе.
Например, есть такая модель данных:
У детейла есть два представления с разными настройками:
На диаграмме для мастера возможно установить только одно представление детейла. Следовательно, смену представлений необходимо настраивать в коде приложения на форме редактирования. Выглядеть это будет следующим образом:
/// <summary>
/// Здесь лучше всего изменять свойства контролов на странице, которые не обрабатываются WebBinder.
/// </summary>
protected override void PostApplyToControls()
{
//Если не отмечено состояние "Активно" в чекбоксе,
//то выводится первое представление детейла (свойства 1,3,5).
if (ctrlАктивно.Checked == false)
{
ctrlSeveralViewsDetail.DetailViewName = SeveralViewsDetail.Views.SeveralViewsDetailD1.Name;
}
//Если чекбокс отмечен, то выводить второе представление (свойства 2,4,6).
else
{
ctrlSeveralViewsDetail.DetailViewName = SeveralViewsDetail.Views.SeveralViewsDetailD2.Name;
}
Page.Validate();
}