为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2019-10-21 14:42:39
我知道这个问题已经被问过数千次了,之前我一直在努力,但是由于某种原因,我无法完成我想完成的工作...我有一个动态添加的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);}
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

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

那就是我所做的,它使生活变得更加轻松。希望它可以帮助某人。


查看完整回答
反对 回复 2019-10-21
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我认为您需要在每次回发中重新创建每个控件。

我知道Repeater控件存储了有关其子级的足够信息,以便在数据绑定时重新创建它们……您可以使用它来节省一些工作。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 542 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信