第一次单击页面中有3个Label,第二次单击有6个,第三次单击有9个,也就是每次单击要在上次的状态下再添加3个。 
我的方法是,可以通过Session来保存上次的状态,一种解法如下: 
Test.aspx关键代码:

<form id="form1" runat="server"> 
<asp:DropDownList ID="DropDownList1" runat="server"> 
<asp:ListItem>1</asp:ListItem> 
<asp:ListItem>2</asp:ListItem> 
<asp:ListItem>3</asp:ListItem> 
</asp:DropDownList> 
<asp:DropDownList ID="DropDownList2" runat="server"> 
<asp:ListItem>a</asp:ListItem> 
<asp:ListItem>b</asp:ListItem> 
<asp:ListItem>c</asp:ListItem> 
</asp:DropDownList> 
<asp:DropDownList ID="DropDownList3" runat="server"> 
<asp:ListItem>A</asp:ListItem> 
<asp:ListItem>B</asp:ListItem> 
</asp:DropDownList> 
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
<asp:Panel ID="Panel1" runat="server"> 
</asp:Panel> 
<asp:Button ID="Button2" runat="server" Text="最后一个Button" /> 
</form>

Test.aspx.cs关键代码:

protected void Page_Load(object sender, EventArgs e) 

if (Session["Panel1"] != null) 

int index = this.Form.Controls.IndexOf(Panel1); 
this.Form.Controls.RemoveAt(index); 
Panel1 = Session["Panel1"] as Panel; 
this.Form.Controls.AddAt(index, Panel1); 


protected void Button1_Click(object sender, EventArgs e) 

for (int i = 0; i < 3; i++) 

Label label = new Label(); 
DropDownList ddl = this.FindControl("DropDownList" + (i + 1).ToString()) as DropDownList; 
label.Text = ddl.SelectedValue; 
Panel1.Controls.Add(label); 

Literal br = new Literal(); 
br.Text = "<br/>"; 
Panel1.Controls.Add(br); 
Session["Panel1"] = Panel1; 
}

当页面回发时,先记下Panel1在控件树中的位置,并移除它,然后从Session变量获取上次添加后的Panel1,并添加到控件树中原来的位置,在这基础上继续添加新的Label控件。最后的那个Button是为了测试之用,作用有二:一是帮助查看添加的位置是否正确,二是用于检测空回发时是否能维持上次的状态。

ASP.NET动态添加控件一例的更多相关文章

  1. asp.net动态添加控件学习

    看了老师的教程后,自己一点感悟记录下来: 1.在页面提交后,动态生成的控件会丢失, 但如果生成控件的代码在pageload中,就可以,原理是每次生成页面都执行生成. 2.动态按件或页面原来控件, 在页 ...

  2. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  3. VC中动态添加控件

    VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...

  4. 怎样在不对控件类型进行硬编码的情况下在 C#vs 中动态添加控件

    文章ID: 815780 最近更新: 2004-1-12 这篇文章中的信息适用于: Microsoft Visual C# .NET 2003 标准版 Microsoft Visual C# .NET ...

  5. winform导入导出excel,后台动态添加控件

    思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...

  6. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  7. WPF:理解ContentControl——动态添加控件和查找控件

    WPF:理解ContentControl--动态添加控件和查找控件 我认为WPF的核心改变之一就是控件模型发生了重要的变化,大的方面说,现在窗口中的控件(大部分)都没有独立的Hwnd了.而且控件可以通 ...

  8. JQuery动态添加控件并取值

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. WPF 动态添加控件以及样式字典的引用(Style introduction)

    原文:WPF 动态添加控件以及样式字典的引用(Style introduction) 我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的 ...

随机推荐

  1. CLR_Via_C#学习笔记之事件

    一:首先我先引用网上别人对事件的一些说明,然后将会通过一个事例进行对事件的演示: EventArgs是包含事件数据的类的基类,用于传递事件的细节.EventHandler是一个委托声明如下 publi ...

  2. [Swift A] - DataSource 与 Delegate有啥区别?

    lukeluke     2012-05-22 07:46 是不是DATASOURCE,提供的是原来对象里并没有的数据,比如,共有几个ITEM啊, 而DELEGATE里,提供的是原来就有的数据,只不过 ...

  3. 关于 yii2 cron运行 console的脚本不运行,可是手动运行成功的原因

    在yii2中运行脚本出现了一个问题 手动运行没有问题. 在cron中不运行.最后找出来了原因 打开yii文件(在根文件夹以下) #!/usr/bin/env php <?php /** * Yi ...

  4. 【Python3 爬虫】17_爬取天气信息

    需求说明 到网站http://lishi.tianqi.com/kunming/201802.html可以看到昆明2018年2月份的天气信息,然后将数据存储到数据库. 实现代码 #-*-coding: ...

  5. JDBC操作,执行数据库更新操作

    目标: 使用Connection对象取得Statement实例 使用Statement进行数据增删改. Statement接口 要对数据库操作,要使用Statement完成.此接口可以使用Connec ...

  6. ECS 实例网络带宽

    1. 带宽是否独享? 是独享. 2. 带宽单线还是双线,电信还是网通? 多线 BGP(中国电信.联通.移动.教育网等)接入,确保全国用户访问畅通. 3. 5 Mbps 带宽怎么理解? 5 Mbps 带 ...

  7. 利用docker创建支持centos的ssh镜像

    创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/ 要想创建支持centos的ssh镜像,就需要以centos镜像为 ...

  8. python hello wlord

    入门运行第一个python程序 https://www.python.org/ 官网下载最新python3安装到电脑 安装成功 cmd进入到安装目录 1.在cmd中直接进入到python安装目录 编写 ...

  9. openssl C语言编码实现rsa加密

    非原创, 引用自: 1 CC=gcc CPPFLAGS= -I /home/yyx//openssl-1.0.1t/include/ CFLAGS=-Wall -g LIBPATH = -L /usr ...

  10. sklearn中xgboost模块中plot_importance函数(特征重要性)

    # -*- coding: utf-8 -*- """ ######################################################### ...