以编程方式添加Web控件时的postBack问题

时间:2011-11-21 10:53:20

标签: c# asp.net webforms dynamic-controls

我有一个问题,我似乎无法找到解决方案,即使有非常相似的问题。

基本上我有在我的Page_Load方法中以编程方式创建的文本框。它们充满了某些cookie的值。

然后我有一个“更新”按钮,当点击它时,应该更新加载到文本框中的cookie。

所以我给出了文本框的ID,与cookie名称相同,然后在更新按钮的On_Click方法上,循环显示文本框并使用文本中的值更新cookie(ID名称)框。

但是,这不起作用。我尝试的内容如下。

只需在onload方法中创建控件。然后,当您在更改文本框后单击该按钮时,将再次调用onload方法,从而将文本框更改回原始文件并按照原样更新文本框。

检查if (!Page.IsPostBack)后,在onload方法中创建控件。这不起作用,因为首先调用页面加载方法,并且不在屏幕上创建控件。你的左边有一个空白的屏幕,没有更新的cookie。

我尝试了EnableViewState哪个无法正常工作,我尝试在(Page.IsPostBack)时自行创建控件但仍然没有。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Yuo应该在onLoad方法中创建控件,并在if (!Page.IsPostBack)代码块中为它们提供初始值。这样,您每次都会创建控制树,但不会重新初始化丢失更新值的值。

答案 1 :(得分:1)

您应该在Init事件期间创建控件,并且您需要在每次加载时都这样做(不要检查IsPostBack)。为了使这些控件能够引发回发并从视图状态设置其属性,它们需要在事件被触发之前位于页面层次结构中。

如果您只是在Init期间创建控件,然后仅在检查IsPostBack后在Load事件中设置数据,那么它们将保留在网站上输入的文本,因为它们将首先被初始化,然后从视图状态数据中填充。 / p>