В моем собственном управлении сервером я бы хотел реализовать что-то похожее на ListView
:
<asp:ListView runat="server">
<LayoutTemplate>
<asp:PlaceHolder runat="server" id="itemPlaceholder" />
</LayoutTemplate>
</asp:ListView>
Я создал свойство ITemplate
, я могу установить макет на странице aspx, и я делаю ITemplate.InstantiateIn(myControl)
.
Но я не могу понять, как вставить элементы управления в заполнитель. Я предполагаю, что это будет что-то вроде MyTemplate.FindControl("itemPlaceholder").Controls.Add(myControl)
. Я попытался привести к типу моего ITemplate
, но я получаю ошибку:
Unable to cast object of type 'System.Web.UI.CompiledTemplateBuilder' to type 'MyNamespace.MyLayoutTemplate'
Чего мне не хватает?
Редактировать: Я только что нашел это: http://www.nikhilk.net/SingleInstanceTemplates.aspx Control developers can define templates to be single instance using metadata which causes the ID'd controls within the template contents to be promoted to the page level... The parser and code-generator together work behind the scenes to add member fields, and initialize them at the right time.
. Вроде бы только для пользовательских элементов управления? Я попытался Page.FindControl()
после этого, но ничего не нашел.