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 контролов);

Встраивание контролов

Имеется возможность указать контрол для просмотра и для редактирования (например, в 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>