Задание порядка свойств
В расширенном редакторе ограничений в web есть древовидная структура, представляющая собой свойства объекта, которые имеются в заданном представлении.
Можно повлиять на порядок отображения свойств. Делается это следующим образом:
- Формируется массив, задающий порядок, из:
- собственных и мастеровых свойств объекта (к ним из представления можно получить доступ как
View.Properties
). - детейловых свойств объекта (к ним из представления можно получить доступ как
View.Details
). - псевдодетейловых свойств (элементы такого рода нужно формировать особым образом, поддержка псевдодетейлов в расширенном редакторе ограничений на момент написания данной статьи дорабатывается).
- собственных и мастеровых свойств объекта (к ним из представления можно получить доступ как
- Данным массивом означивается свойство в WOLV’е
ViewPropertiesOrderedList
(по умолчанию оно равноnull
).
При инициализации расширенного редактора ограничений, если свойство ViewPropertiesOrderedList
не null
, ему будет передан указанный порядок.
Например,
public partial class C__КредитL : BaseListForm<Кредит>
{
// ...
/// <summary>
/// Вызывается самым первым в Page_Load.
/// </summary>
protected override void Preload()
{
WebObjectListView1.Operations.LimitEdit = true;
WebObjectListView1.LimitResolvingViews.AddRange(new View[] { Клиент.Views.C__КлиентE, Кредит.Views.C__КредитE });
var viewPropertiesOrderedList = new ArrayList();
viewPropertiesOrderedList.AddRange(Кредит.Views.C__КредитE.Properties);
viewPropertiesOrderedList.AddRange(Кредит.Views.C__КредитE.Details);
WebObjectListView1.ViewPropertiesOrderedList = viewPropertiesOrderedList;
}
// ...
}
ViewPropertiesOrderedList
без LimitResolvingViews
нельзя.Или при наличии псевдодетейлов используется структура PseudoDetailInExtendedView:
public partial class C__КлиентL : BaseListForm<Клиент>
{
// ...
/// <summary>
/// Вызывается самым первым в Page_Load.
/// </summary>
protected override void Preload()
{
WebObjectListView1.Operations.LimitEdit = true;
WebObjectListView1.LimitResolvingViews.AddRange(new View[] { Клиент.Views.КлиентE, Кредит.Views.КредитE });
var viewPropertiesOrderedList = new ArrayList();
viewPropertiesOrderedList.Add(View.Properties[1](ис-управления-проектами_1.html));
viewPropertiesOrderedList.Add(View.Properties[0]);
viewPropertiesOrderedList.AddRange(View.Details);
viewPropertiesOrderedList.Add(new PseudoDetailInExtendedView(Кредит.Views.КредитE, Information.ExtractPropertyPath<Клиент>(x => x.ФИО), "Кредит_Клиент"));
WebObjectListView1.ViewPropertiesOrderedList = viewPropertiesOrderedList;
}
// ...
}
Автоматическое добавление свойств, используемых в ограничении (AutoAddUsedInLimitationProperties)
Набор свойств, доступных в Расширенном редакторе ограничений, и набор свойств представления, по которому загружается список, могут отличаться. Это может привести к тому, что описанное пользователем ограничение будет несовместимо с представлением (в сформированном SQL-запросе в where
будут использованы поля, отсутствующие в списке выбора). Для автоматического расширения представления, используемого при загрузке списка, необходимо установить свойство AutoAddUsedInLimitationProperties
.
Если свойство AutoAddUsedInLimitationProperties
имеет значение true
, то в работе будет использоваться ViewPropertyAppender.