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>