[英]How to create and use custom control with UpdatePanel added to the page programmatically
我有简单的网络用户控件(我在网络中某处找到的代码):
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"
Inherits="ARP.DynamicsCRM2011.MagicWebForm.WebUserControl1" %>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged"
Text="Checkbox" />
<asp:Button ID="Button1" runat="server" Text="Button" Visible="False" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
protected void Page_Load(object sender, EventArgs e)
{
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
Button1.Visible = CheckBox1.Checked;
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
现在,我想将此控件添加到我的页面中(以编程方式在OnLoadComplete事件中):
<%@ Reference Control="~/WebUserControl1.ascx" %>
WebUserControl1 myControl = (WebUserControl1)Page.LoadControl("~/WebUserControl1.ascx");
myControl.ID = "myControl_" + some_name;
parentControl.Controls.Add(myControl);
当然,我的页面上有SriptManager,并且控件已正确添加。 我知道每次页面加载时都必须重新创建以编程方式添加的控件。 不幸的是,这导致创建新控件,因此无法选中复选框-在选中它之后,将再次触发(页面的)OnLoadComplete,并创建新控件。 如果我忽略了,则什么也不显示。 所以问题是-如何做到这一点?
您可以在单击按钮时添加该控件,并将添加的控件的数量保存在某些存储中,例如Session
。 在Page_Init
您需要检查该计数值并重新创建之前添加的每个控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.