2011-11-28 94 views
1

有没有办法通过代码填充ITemplate? 让我们假设我有一个UpdatePanel通过代码填充ITemplate

UpdatePanel upnl = new UpdatePanel(); 
// What should be done next? 
//upnl.ContentTemplate = ... 

和它的结果将是等效的:如果我理解正确你的问题

<asp:UpdatePanel runat="server" ID="upnl"> 
    <ContentTemplate> 
    test 
    </ContentTemplate> 
</asp:UpdatePanel> 

回答

5

这样做:

public class YourTemplate : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
     container.Controls.Add(new LiteralControl("test")); 
    } 
} 

... 
upnl.ContentTemplate = new YourTemplate(); 
+0

我在尝试同样的事情,但我没有传送正确的内容,所以我看到空的。 – misha

1

在ASP.net中启用的所有模板控件必须实现System.Web.UI.ITemplate界面以在运行时创建模板时间。

但您无需在更新 面板的情况下创建自定义模板类。检查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);