重新加载在asp.net上的onClick发布数据

时间:2010-01-11 22:35:16

标签: asp.net dynamic controls postback

简化代码以使其更清晰。

说明

我正在编写一个自定义控件,它使用Controls.Add()添加它想要的所有子控件。

比方说,我的控件名为“lots_of_text_boxes”,我添加了最少数量的文本框,并提供了一个“添加新文本框”的按钮(Controls.Add(按钮))。

控件呈现得很好。我点击按钮,OnLoad(EventArgs e)重新创建子控件,asp.net的魔法找到我发布的所有数据并填写文本框,以便我可以阅读它们。

btnAddNew_Click(对象发件人,EventArgs e)被调用以添加新的文本框。

首先我尝试了Controls.Add(文本框),但这会将文本框置于添加按钮下方的底部。

我可以删除按钮,添加文本框并重新添加按钮,但我不想这样做,因为它在实际情况下并不简单(许多相关的按钮和控件交织在一起)。

我想做什么: Number_of_Textboxes_to_show ++; Controls.Clear(); OnLoad(new EventArgs());

这会擦除控件重新开始并使用一个新控件重新创建它。

问题

因为已经加载了postdata,所以页面被重新绘制,但字段中的所有数据都丢失了。 我真的想要一个功能“LoadPostData()”,它通过所有子控件并重新加载他们的后期数据。

我觉得帖子数据仍然在内存中(我希望),并且第2遍的所有控件都具有与第1遍相同的唯一ID(以及之前发布的表格)。< / p>

有没有人看到这样的东西?

1 个答案:

答案 0 :(得分:1)

听起来问题只是简单的控制放置。如果控件被添加到您想要的位置(按钮上方),则无需擦除表单并重建它,对吗?

我建议在用户控件中添加一些Panel或Placeholder控件来定义它的布局。这样,您的文本框可以添加到Panel而不是整个用户控件,您的布局将被保留,控件将在您想要的位置。