C# 以编程方式添加web控件时的回发问题
我有一个问题,我似乎找不到解决办法,即使有非常类似的问题 基本上,我有一些文本框,它们是在我的页面加载方法中通过编程创建的。它们被某些cookie中的值填充 然后,我有一个“更新”按钮,当单击该按钮时,应该会更新加载到文本框中的cookie 因此,我给出了文本框的ID,与cookie的名称相同,然后在更新按钮的on_Click方法上,我在文本框中循环并使用文本框中的值更新cookie(ID名称) 然而,这是行不通的。我所做的尝试如下 这些控件只是在onload方法中创建的。然后,当您在更改文本框后单击按钮时,将再次调用onload方法,从而将文本框更改回原始状态并按原样更新 在检查(!Page.IsPostBack)后,将在onload方法中创建控件。这不起作用,因为页面加载方法首先被调用,并且不会在屏幕上创建控件。你的左边是一个空白屏幕,没有更新的cookies 我尝试了C# 以编程方式添加web控件时的回发问题,c#,asp.net,webforms,dynamic-controls,C#,Asp.net,Webforms,Dynamic Controls,我有一个问题,我似乎找不到解决办法,即使有非常类似的问题 基本上,我有一些文本框,它们是在我的页面加载方法中通过编程创建的。它们被某些cookie中的值填充 然后,我有一个“更新”按钮,当单击该按钮时,应该会更新加载到文本框中的cookie 因此,我给出了文本框的ID,与cookie的名称相同,然后在更新按钮的on_Click方法上,我在文本框中循环并使用文本框中的值更新cookie(ID名称) 然而,这是行不通的。我所做的尝试如下 这些控件只是在onload方法中创建的。然后,当您在更改文本框
EnableViewState
,但没有成功,我尝试了在(Page.IsPostBack)
时自己创建控件,但仍然没有任何效果
有什么想法吗?您应该在onLoad方法中创建控件,并在
if(!Page.IsPostBack)
代码块中为它们提供初始值。这样,您每次都将创建控件树,但不会重新初始化失去更新值的值。Yuo应在onLoad方法中创建控件,并在if(!Page.IsPostBack)
代码块中为它们提供初始值。这样,您每次都会创建控件树,但不会在没有更新值的情况下重新初始化值。您应该在Init事件期间创建控件,并且需要在每次加载时都这样做(不要选中IsPostBack)。为了让这些控件引发回发并从viewstate设置属性,它们需要在触发事件之前处于页面层次结构中
如果您只是在Init期间创建控件,然后在选中IsPostBack后才在Load事件中设置数据,然后,它们将保留在网站上输入的文本,因为它们将首先初始化,然后根据viewstate数据填充。您应该在Init事件期间创建控件,并且每次加载时都需要这样做(不要选中IsPostBack)。为了让这些控件引发回发并从viewstate设置属性,它们需要在触发事件之前处于页面层次结构中
如果您只是在Init期间创建控件,然后在选中IsPostBack后才在Load事件中设置数据,然后,它们将保留在网站上输入的文本,因为它们将首先初始化,然后从viewstate数据填充。您真的确定需要像这样以编程方式创建控件吗?你让事情变得更难了。如果需要控件的动态编号,最简单的方法是使用
中继器
。如果你确实需要继续这样做,这一系列的博客文章将非常有帮助:2800_Part-1_2900.aspxIll查看转发器。从没听说过。我通常从不以编程方式创建控件,只是在这种情况下,我永远不会知道页面上有多少控件。你真的确定需要像这样以编程方式创建控件吗?你让事情变得更难了。如果需要控件的动态编号,最简单的方法是使用中继器
。如果你确实需要继续这样做,这一系列的博客文章将非常有帮助:2800_Part-1_2900.aspxIll查看转发器。从没听说过。我通常不会以编程方式执行控件,只是在这种情况下,我永远不会知道页面上有多少个控件。+1使用onLoad的好处是,您可以访问页面上其他控件的值,同时新控件在回发时会设置它们的值。+1使用onLoad的好处是,您可以访问页面上其他控件的值,同时在回发时设置新控件的值。