WebControlProvider
- это провайдер, который позволяет настраивать контролы для отображения свойств объекта на списковых контролах (например, WebObjectListView, AjaxGroupEdit). Все его настройки хранятся в файле /xml/WebControlProvider.xml
Настройки
Есть 2 способа настройки:
1.Указание типа контрола для любого типа (XML-элемент propertytype
), например
<propertytype name="Boolean">
<control typename="System.Web.UI.WebControls.CheckBox, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" property="Checked" codefile="" />
<editcontrol ... />
<filtercontrol ... />
</propertytype>
2.Указание типа контрола для свойства конкретного типа (XML-элемент customproperty
), например
<customproperty class="Адрес" property="ПервичныйКлюч">
<control typename="IIS.ISOGD.Controls.Partials.ArcMapViewControl" property="PrimaryKey" codefile="~/Controls/Partials/ArcMapViewControl.ascx" />
<editcontrol ... />
<filtercontrol .. />
</customproperty>
- control - контрол, который будет использоваться для отображения (например, в WebObjectListView) или для мастеровых свойств в AjaxGroupEdit;
- editcontrol - контрол, который будет использоваться для редактирования (например, в AjaxGroupEdit);
- filtercontrol - контрол, который будет использоваться для фильтрации в WebObjectListView;
В тэге <control /> (<editcontrol />,<filtercontrol />)
указываются:
typename
- тип контрола;property
- свойство контрола, которое биндится со значением в списке (в конкретной ячейке, где должен располагаться контрол);codefile
- путь к ASCX-файлу контрола (только для ASCX контролов);
customproperty
имеет больший приоритет, чем propertytype
.
1. Сначала ищется контрол для конкретного свойства.
2. Если настройка не найдена, то ищется контрол для типа этого свойства.
Встраивание контролов
Имеется возможность указать контрол для просмотра и для редактирования (например, в AjaxGroupEdit).
Если разработан пользовательский контрол, который используется на формах редактирования и необходимо встроить его в WebObjectListView. Может возникнуть проблема с тем, что в WebObjectListView он выглядит как контрол для ввода данных, а использовать его планируется только для отображения.В таких случаях можно реализовать свойство Enabled
у контрола, и когда контрол будет встраивается в WOLV, то ему автоматически проставится Enabled = false
.
Пример
<?xml version="1.0" encoding="utf-8" ?>
<root>
<propertytype name="Boolean">
<control typename="System.Web.UI.WebControls.CheckBox, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" property="Checked" codefile=""/>
</propertytype>
<propertytype name="NullableDateTime">
<control typename="ICSSoft.STORMNET.Web.Controls.DateTimeFormattedControl" property="Text" codefile="DateTimeFormattedControl.ascx"/>
<editcontrol typename="ICSSoft.STORMNET.Web.Controls.DatePicker" property="Text" codefile="DatePicker.ascx"/>
</propertytype>
<propertytype name="DateTime">
<control typename="ICSSoft.STORMNET.Web.Controls.DateTimeFormattedControl" property="Text" codefile="DateTimeFormattedControl.ascx"/>
<editcontrol typename="ICSSoft.STORMNET.Web.Controls.DatePicker" property="Text" codefile="DatePicker.ascx"/>
</propertytype>
<customproperty class="Адрес" property="ПервичныйКлюч">
<control typename="IIS.ISOGD.Controls.Partials.ArcMapViewControl" property="PrimaryKey" codefile="~/Controls/Partials/ArcMapViewControl.ascx" />
</customproperty>
</root>