LinkButton ไดนามิก ASP.NET UserControl ไม่ได้อยู่ในการควบคุมบน postback Page_Load

ฉันเพิ่ม LinkButton แบบไดนามิกใน UserControl ใน postback การควบคุมแบบไดนามิกจะแสดงขึ้น แต่คอลเลกชันการควบคุมมีความยาว 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());
            }
        }

    }
}

person Metaphor    schedule 05.10.2013    source แหล่งที่มา


คำตอบ (1)


หากคุณกำลังเพิ่มการควบคุมแบบไดนามิก คุณจะต้องเพิ่มการควบคุมทั้งเมื่อ Page.IsPostback=true และเมื่อ Page.IsPostback=false...

กล่าวอีกนัยหนึ่ง สิ่งต่อไปนี้น่าจะเป็นเคล็ดลับสำหรับคุณ:

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

อีกวิธีหนึ่งที่อธิบายได้ก็คือ คุณในฐานะโปรแกรมเมอร์จำเป็นต้องนำแผนผังการควบคุมกลับมาเป็นเหมือนเดิมก่อนที่จะ postback ด้วยตนเอง เมื่อคุณทำเสร็จแล้วว่า "เครื่องจักร" ของเว็บฟอร์ม asp.net จะโหลด viewstate และโพสต์ข้อมูลเพื่อให้การควบคุมกลับสู่สถานะที่อยู่ก่อนที่จะ postback (จากนั้นเพิ่มเหตุการณ์เช่นการคลิกปุ่ม)

คุณอาจพบว่าข้อมูลอ้างอิงต่อไปนี้มีประโยชน์ในการช่วยให้คุณเข้าใจ:

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/

person simonweijgers    schedule 05.10.2013