Редактор для выбора поля карточки
Для выбора поля карточки, с которым связаны данные элемента управления, может использоваться стандартный редактор — Docsvision.BackOffice.WebLayoutsDesigner.Editors.FieldMetadataEditor
. Данный редактор предоставляет возможность установки фильтра для ограничения доступных для выбора полей.
Следующий пример демонстрирует редактор, предоставляющий возможность выбирать только поля булева типа.
class BooleanMetadataEditor : ITypeEditor
{
public FrameworkElement ResolveEditor(PropertyItem propertyItem)
{
var editor = new FieldMetadataEditor();
//
editor.FieldFilter = (field) => { return field.FieldType == FieldType.Bool; }; (1)
return editor.ResolveEditor(propertyItem);
}
}
1 | Устанавливаем ограничением для отображаемых типов. Текущее обрабатываемое поле передаётся в field . |
Использование возможностей фильтра FieldFilter
позволяет установить более точные критерии для отображения списка полей в редакторе.
Например, в следующем коде поля ограничиваются по типу и связанной карточки и секции, с которой должно быть связано поле (для полей ссылающихся на справочники).
public FrameworkElement ResolveEditor(PropertyItem propertyItem)
{
var editor = new FieldMetadataEditor();
editor.FieldFilter = (field) => { (1)
return (field.FieldType == FieldType.RefId || field.FieldType == FieldType.UniqueId) &&
field.LinkedCardTypeId == RefBaseUniversal.ID && (2)
field.LinkedSectionId == RefBaseUniversal.Items.ID; }; (3)
return editor.ResolveEditor(propertyItem);
}
1 | Устанавливаем фильтр. |
2 | Поле должно быть связано с карточкой Конструктор справочников |
3 | Поле должно быть связано с секцией Строка справочника |