有没有办法用代码填充ITemplate
?
假设我有一个UpdatePanel
:
UpdatePanel upnl = new UpdatePanel();
// What should be done next?
//upnl.ContentTemplate = ...
,结果相当于:
<asp:UpdatePanel runat="server" ID="upnl">
<ContentTemplate>
test
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:5)
如果我正确理解你的问题,我们会这样做:
public class YourTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
container.Controls.Add(new LiteralControl("test"));
}
}
...
upnl.ContentTemplate = new YourTemplate();
答案 1 :(得分:1)
ASP.net中所有启用模板的控件必须实现System.Web.UI.ITemplate接口才能在运行时创建模板。
但是在更新的情况下,您无需创建自定义Template类 面板。检查UpdatePanel.ContentTemplateContainer Property -
ContentTemplateContainer属性使您能够以编程方式将子控件添加到UpdatePanel控件,而无需定义继承自ITemplate
接口的自定义模板。如果要以声明方式或通过设计器向UpdatePanel控件添加内容,则应使用<ContentTemplate> element
将内容添加到ContentTemplate属性。
检查此代码段 - 有关详细信息,请查看上面的ContentTemplateContainer
链接。
UpdatePanel up1 = new UpdatePanel();
up1.ID = "UpdatePanel1";
Button button1 = new Button();
button1.ID = "Button1";
button1.Text = "Submit";
button1.Click += new EventHandler(Button_Click);
up1.ContentTemplateContainer.Controls.Add(button1);
Page.Form.Controls.Add(up1);