[英]ASP.net UpdatePanel dynamically using C# code
我有一个自定义用户控件,其中包含一些 Asp.net 代码。 我想使用 C# 编写相同的代码。 问题是我不知道如何将中继器和一些按钮放入 ContentTemplate。
Asp.net 代码:
<asp:UpdatePanel runat="server" ID="up">
<ContentTemplate>
<n2:Repeater ID="rpt" runat="server">
<ItemTemplate></ItemTemplate>
</n2:Repeater>
<asp:LinkButton runat="server" ID="btnFirst"
Visible="false" Enabled="false" Text="<<" OnClick="btnFirst_Click" />
</ContentTemplate>
</asp:UpdatePanel>
那么我怎么能在 C# 代码中写这个块呢? 准确地说,我如何将转发器和链接按钮插入到 ContentTemplate 中。
注意:我不想使用 LoadTemplate 来做到这一点。
编辑
我试过 ContentTemplateContainer.Controls.Add():
private UpdatePanel up = new UpdatePanel();
private Repeater rpt = Repeater();;
public Paging{
//Add repeater to updatePanel
up.ContentTemplateContainer.Controls.Add(rpt);
AsyncPostBackTrigger apb3 = new AsyncPostBackTrigger();
apb3.ControlID = "btnFirst";
apb3.EventName = "Click";
//Add Triggers to updatePanel
up.Triggers.Add(apb1);
//Create buttons
btnFirst = new LinkButton();
btnFirst.Visible = false;
btnFirst.Enabled = false;
btnFirst.Text = "<<";
btnFirst.Click += new EventHandler(btnFirst_Click);
//Add buttons to update panel
up.ContentTemplateContainer.Controls.Add(btnFirst);
}
protected void Page_Load(object sender, EventArgs e)
{
rpt.ItemTemplate = LoadTemplate("~/UI/Templates/NewsEvent.ascx");
....
}
我有一个由 Page_Load 上的第一行引起的错误: Eval()、XPath() 和 Bind() 等数据绑定方法只能在页面中包含的控件中使用。
这是 NewsEvent.ascx:
<img src='<%# Eval("ImageThumbnail") %>' alt="" />
你不能用 ITemplate 类型做到这一点......我在尝试在 tabcontainer 控件中克隆一个 tabpanel 时遇到了类似的问题......我已经有一个隐藏的 tabpanel,我想要做的就是创建一个新的 tabpanel 并基本上实例化 ITemplate隐藏的一个在新的。
问题是 ITemplate ......对于交互背后的代码来说,它不是很动态我建议将该标记放在页面上,就像你已经拥有的那样,并在父级上设置 visible = false ,然后当你需要数据绑定并显示隐藏面板时。
让初始绑定工作不是问题......它的回发处理......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.