ASP.NET动态创建的控件和回发

我知道这个问题已经被问过数千次了,之前我一直在努力,但是由于某种原因,我无法完成我想完成的工作...我有一个动态添加的LinkButton,单击该按钮可以动态添加控件(在此示例中为文本框)添加到同一面板。目的是要不断增加与单击LinkButton时一样多的控件(即,我单击一次,一个框,然后另一个单击将给我2个框,另一个单击将添加第3个框)。在下面的代码中,我使用序列化的当前日期和时间为每个文本框控件创建唯一的ID。


当我执行代码时,单击“添加筛选器”将生成一个新的文本框,但是再次单击将创建一个新的文本框,并在此之前处理该文本框。相反,我想保留先前的文本框以及其中提交的所有数据。


感谢您的帮助。


在aspx中:


<asp:Panel ID="pnlFilter" runat="server">


</asp:Panel>

在aspx.cs中:


protected void Page_Init(object sender, EventArgs e)

{

        LinkButton lb = new LinkButton();

        lb.ID = "lbAddFilter";

        pnlFilter.Controls.Add(lb);

        lb.Text = "Add Filter";

        lb.Click += new EventHandler(lbAddFilter_Click);

}



void lbAddFilter_Click(object sender, EventArgs e)

{

    TextBox tb = new TextBox();

    tb.ID = "tb" + DateTime.Now.ToBinary().ToString();

    pnlFilter.Controls.Add(tb);

}


PIPIONE
浏览 543回答 3
3回答

拉丁的传说

对于其他试图做这样的事情的人:不要。相反,请考虑信息流并了解有一种更好的方法。无需动态创建输入控件。它们可以是静态的,并且在填写并提交后,该信息必须到达某个地方(例如,数据库,缓存,会话)。一旦到达那里,就回发,遍历您选择的存储中的所有项目并为其创建显示。那就是我所做的,它使生活变得更加轻松。希望它可以帮助某人。

江户川乱折腾

我认为您需要在每次回发中重新创建每个控件。我知道Repeater控件存储了有关其子级的足够信息,以便在数据绑定时重新创建它们……您可以使用它来节省一些工作。
打开App,查看更多内容
随时随地看视频慕课网APP