簡體   English   中英

ASP.NET UserControl動態LinkBut​​ton不在回發時的控件中Page_Load

[英]ASP.NET UserControl dynamic LinkButton is not in Controls on postback Page_Load

我在UserControl中添加了動態LinkBut​​ton。 回發時顯示動態控件,但Controls集合的長度為0。

namespace TestUC1
{
    public partial class UC : System.Web.UI.UserControl
    {
        public event EventHandler Click;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) 
            {
                foreach (Control c in Controls)
                {
                    if (c is LinkButton)
                    {
                        ((LinkButton)c).Click += new EventHandler(OnClick);
                    }
                }
            } else
            {
                AddNewButton();
            }
        }

        protected void AddNewButton()
        {
            LinkButton lb = new LinkButton();
            lb.ID = "TestLink";
            lb.Text = "Test Link";
            lb.Click += new EventHandler(OnClick);
            Controls.Add(lb);
        }

        protected void OnClick(object sender, EventArgs e)
        {
            if (Click != null)
            {
                Click(this, new EventArgs());
            }
        }

    }
}

如果要動態添加控件,則在Page.IsPostback = true時以及在Page.IsPostback = false時都需要添加控件。

換句話說,以下應為您解決問題:

    protected void Page_Load(object sender, EventArgs e)
    {
        AddNewButton();
    } 

另一種表達方式是,作為程序員,您需要手動將控制樹恢復為回發之前的狀態。 一旦完成,asp.net Web窗體“ machinery”將加載視圖狀態並發布數據,以使控件恢復到回發之前的狀態(然后引發諸如單擊按鈕的事件)。

您可能會發現以下參考資料有助於您理解:

http://fuchangmiao.blogspot.co.uk/2007/11/aspnet-20-page-lifecycle.html

http://www.c-sharpcorner.com/uploadfile/61b832/Asp-Net-page-life-cycle-events/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM