Мы делаем это с каждым элементом управления в Sitefinity, но это будет немного сложно сделать с вашими собственными элементами управления (я предполагаю, что вы используете Sitefinity 3.7).Шаги следующие:
- Реализация элемента управления контейнера шаблона, унаследованного от GenericContainer :
protected class ItemListContainer : GenericContainer
{
public virtual Repeater RepeaterControl
{
get { return base.GetControl<Repeater>("repeater", true); }
}
}
- Вам необходимо получить шаблон из ресурса (используйте метод ControlUtils.GetTemplate - Sitefinity сделает это за вас):
public virtual ITemplate ItemListTemplate
{
get
{
if (itemListTemplate == null)
itemListTemplate = ControlUtils.GetTemplate(<virtual path to template>, <resource file name>,
<type to determine assembly for template>);
return itemListTemplate;
}
set
{
itemListTemplate = value;
}
}
- Вам необходимо вызвать метод шаблона InstantiateIn и передать ему управление контейнером
listContainer = new ItemListContainer();
ItemListTemplate.InstantiateIn(listContainer);
- Доступ ко всем элементам управления через контейнер
listContainer.RepeaterControl.DataBind();
В Sitefinity 4.0 мы включили базовый класс для всех элементов управления, который предоставит вам эту функциональность изкоробка.Однако в 3.7 вам придется делать все это вручную.
Класс ControlUtils находится в пространстве имен Telerik.Framework.Web.Приведенный выше код показывает, как все это делается в элементе управления ContentView, и вам, вероятно, следует внести небольшие изменения в зависимости от вашего случая.
Cheers,
Slavo
Команда Sitefinity @ Telerik