есть контрол
[ParseChildren(ChildrenAsProperties = true)]
[PersistChildren(true)]
public class DropDownPanel : Control, INamingContainer
{
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateContainer(typeof(DropDownPanelContainer))]
public ITemplate Template { get; set; }
private DropDownPanelContainer _container;
protected override void CreateChildControls()
{
if (Template != null)
{
_container = new DropDownPanelContainer(this);
Template.InstantiateIn(_container);
Controls.Add(_container);
}
else
{
_container = new DropDownPanelContainer(this);
_container.Controls.Add(new LiteralControl("Шаблон не задан"));
}
}
protected override void OnDataBinding(EventArgs e)
{
EnsureChildControls();
base.OnDataBinding(e);
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<b>begin</b><br />");
_container.RenderControl(writer);
writer.Write("<b>end</b><br />");
}
}
public class DropDownPanelContainer : Control, INamingContainer
{
private DropDownPanel _parent = null;
public DropDownPanelContainer(DropDownPanel p)
{
_parent = p;
}
}
есть страница, которая его пользует:
<div>
<cc:DropDownPanel ID="dd" runat="server">
<Template>
<asp:Button ID="Button1" runat="server" Text="Button"></asp:Button>
</Template>
</cc:DropDownPanel>
</div>
Проблема в следующем: когда я делаю вот так:
protected void Page_Load(object sender, EventArgs e)
{
dd.DataBind();
Button1.Text = "sss";
}
Вылетает исключение, что Button1 равен null. Что я делаю не так?