LinkButton dinamis UserControl ASP.NET tidak ada dalam Kontrol pada postback Page_Load

Saya menambahkan LinkButton dinamis di UserControl. Pada postback, kontrol dinamis ditampilkan tetapi koleksi Kontrol panjangnya 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 sumber


Jawaban (1)


Jika Anda menambahkan kontrol secara dinamis maka Anda perlu menambahkan kontrol baik saat Page.IsPostback=true, maupun saat Page.IsPostback=false...

Dengan kata lain, hal berikut akan membantu Anda:

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

Cara lain untuk menjelaskannya adalah Anda sebagai pemrogram perlu mengembalikan pohon kontrol secara manual ke keadaan sebelum postback. Setelah Anda selesai melakukannya, "mesin" formulir web asp.net akan memuat kondisi tampilan dan memposting data untuk mengembalikan kontrol ke keadaan sebelum postback (dan kemudian memunculkan peristiwa seperti klik tombol).

Anda mungkin menemukan referensi berikut berguna untuk membantu pemahaman Anda:

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