Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态控件创建_Asp.net - Fatal编程技术网

Asp.net 动态控件创建

Asp.net 动态控件创建,asp.net,Asp.net,我在ASP.NET中阅读了有关动态控件创建的信息,这段文字: …使用动态控件时 我们必须记住,它们将存在 直到下一次回发。ASP.NET 不会重新创建动态添加的 控制如果需要重新创建 控制多次,你应该 在中执行控件创建 加载事件处理程序。这有 允许您 将视图状态与动态对象一起使用 控制即使视图状态为 通常在页面之前恢复。加载 事件,如果在 Page.Load事件的处理程序, ASP.NET将应用任何视图状态 它在事件发生后拥有的信息 加载事件处理程序结束。这 过程是自动的 我想试一下这个例子 以

我在ASP.NET中阅读了有关动态控件创建的信息,这段文字:

…使用动态控件时 我们必须记住,它们将存在 直到下一次回发。ASP.NET 不会重新创建动态添加的 控制如果需要重新创建 控制多次,你应该 在中执行控件创建 加载事件处理程序。这有 允许您 将视图状态与动态对象一起使用 控制即使视图状态为 通常在页面之前恢复。加载 事件,如果在 Page.Load事件的处理程序, ASP.NET将应用任何视图状态 它在事件发生后拥有的信息 加载事件处理程序结束。这 过程是自动的

我想试一下这个例子 以声明方式创建按钮-

<asp:Button ID="Button1" runat="server" Text="Button" 
             onclick="Button1_Click"  />

并在“代码5”复选框后面动态显示-

protected void Page_Load(object sender, EventArgs e)
{
  for (int i = 0; i <= 5; i++)
    {
      var chBox = new HtmlInputCheckBox();
      Controls.Add(chBox);
    }

}
受保护的无效页面加载(对象发送方,事件参数e)
{

对于(int i=0;i发生这种情况的原因是,为了使ASP.NET恢复发布的值,这些控件需要在加载之前成为页面的一部分。为了使此工作正常,您需要(如果可能)在页面上创建控件。

您必须为每个动态控件设置一个ID,以便它们可以跨回发同步。

可以在页面上创建控件

protected void Page_Init(object sender, EventArguments e)
{
  //Generate the checkboxes dynamically here.
  CheckBox c;
  for (int i = 0; i < 5; i++) {
    c = new CheckBox();
    c.ID = "Checkbox" + i.ToString();

    divContainer.Controls.Add(c); //create a div with runat="Server" attribute or use an asp:Panel, etc. container controls.
  }
}
受保护的无效页\u Init(对象发送方,事件参数)
{
//在此处动态生成复选框。
复选框c;
对于(int i=0;i<5;i++){
c=新复选框();
c、 ID=“Checkbox”+i.ToString();
divContainer.Controls.Add(c);//使用runat=“Server”属性创建一个div,或使用asp:Panel等容器控件。
}
}

之后,再次尝试单击按钮,状态将始终保持。

据我所知,无论在OnInit或OnLoad中在何处创建控件 (但有些书建议在onLoad中),问题是把它们放在哪里——如果有的话 通过控件进行放置。添加-它将控件放置在
之外,以便回发
不接受控件的状态。在
中创建一个占位符并将动态控件添加到此占位符后,一切都开始正常工作。

私有void Page_Init(object sender,System.EventArgs e){for(int i=0;我引用了OP,这对PageLoad中创建的控件已经有效了。我按照您和Andrew Hare所说的做了,但没有改变,我可以在这里的某个地方发布我的aspx吗?您好。在我的评论中看到更新的代码,希望它能工作。如果没有,请给我写一条评论,我会看看是否能提供帮助。