此例子达到的效果是:
每按一次Button1,在表格Table1中添加一行(行中有2列,一列是文本框,一列是下拉框),并且当按钮第一次按下时再添加一个按钮,点击这个动态添加的按钮,输出表格中所有的控件的值。

前台:

<form id="Form1" method="post" runat="server">
            <asp:Table id="Table1" runat="server"></asp:Table>
            <asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder><BR><BR>
            <asp:Button id="Button1" runat="server" Text="添加一行"></asp:Button>
        </form>

放置一个Table用来动态添加控件,放置一个PlaceHolder用来动态添加按钮,按下这个按钮得到表中控件的值,按下Button1按钮一次就添加一行。

后台:

Button1按钮的事件:

private void Button1_Click(object sender, System.EventArgs e)
        {
            AddTextBoxs();
            if(ViewState["Count"]==null)AddButton();
            ViewState["Count"]=Convert.ToInt16(ViewState["Count"])+1;
        }

两个方法:一个用来动态添加表格中的行,一个用来动态添加按钮(按钮不是按下Button1添加一次的,所以加上if(ViewState["Count"]==null)表示只有第一次加载按下按钮的时候才添加)

private void AddTextBoxs()
        {
            TableRow tr=new TableRow();
            TableCell tc1=new TableCell();
            TextBox t=new TextBox();
            t.ID="tb"+Table1.Rows.Count;
            tc1.Controls.Add(t);
            TableCell tc2=new TableCell();
            DropDownList dpl=new DropDownList();
            dpl.ID="dpl"+Table1.Rows.Count;
            for(int i=0;i<10;i++)dpl.Items.Add(i.ToString());
            tc2.Controls.Add(dpl);
            tr.Cells.Add(tc1);
            tr.Cells.Add(tc2);
            Table1.Rows.Add(tr);
        }

        private void AddButton()
        {        
            Button b=new Button();
            b.ID="btn";
            b.Text="按钮";
            b.Click += new System.EventHandler(btn_Click);
            PlaceHolder1.Controls.Add(b);
        }

最后是那个动态添加的按钮的事件:

private void btn_Click(object sender, System.EventArgs e)
        {
            for(int i=0;i<Table1.Rows.Count;i++)
            {
                Response.Write(((TextBox)Table1.Rows[i].FindControl("tb"+i)).Text+((DropDownList)Table1.Rows[i].FindControl("dpl"+i)).SelectedValue+"<br>");
            }
        }

其实动态添加的控件不复杂,只需要注意一点:动态添加的控件在PostBack的时候也需要再次添加,那么怎么知道是不是按下了按钮,或者说怎么知道已经按了几次按钮?就用一个标示位存放在ViewState中即可。

Page_Load事件:

private void Page_Load(object sender, System.EventArgs e)
        {
            if(ViewState["Count"]!=null)
            {
                for(int i=0;i<Convert.ToInt16(ViewState["Count"]);i++)
                    AddTextBoxs();
                AddButton();
            }
        }

注意不要添加if(!IsPostBack){},相反你倒可以添加if(IsPostBack),因为页面第一次加载不可能已经按下按钮了。

转载于:https://www.cnblogs.com/lovecherry/archive/2005/04/16/138968.html

(论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?相关推荐

  1. (论坛答疑点滴)如何按照HashTable动态设定类的属性和字段?

    正好有人问这个,代码非常简单,最基本的应用,直接贴代码 using System; namespace Test {     /**//// <summary>     /// Class ...

  2. 微信小程序之动态添加、删除指定view和获取input值

    遇到的问题: 动态的添加指定的view内容..嗯..很简单..wx:for就搞定!! 动态添加的内容中有input,最终获取值的时候,要获取到所有input的值并且是一个数组. 动态删除指定的已经添加 ...

  3. JS给table动态添加行和列

    效果图: input为动态添加 <botton onclick="AddTableCell()">添加一列</botton><table id=&qu ...

  4. 利用jquery给指定的table动态添加一行、删除一行

    $("#mytable tr").find("td:nth-child(1)") 1表示获取每行的第一列 $("#mytable tr"). ...

  5. table动态添加、删除tr

    在Web网页中动态为table添加或删除数据行是很常见的需求,实现这一效果有很多种方法,这里只介绍一种,不过在写这一解决方法的时候我感受到了熟练使用Jquery的重要性. Html代码: <st ...

  6. JS实现表格Table动态添加删除行

    1.页面内容 <table style="border:1px ; width:100%; height:160px"> <THEAD> <TR> ...

  7. java为table添加一行_Js实现Table动态添加一行的小例子

    1 2 3 4 5 6 7 申报部门 8 街镇 9 路段名称 10 起止路名 11 操作 12 13 14 15 16 17 三林城管署 18 港城城管署 19 惠南城管署 20 金桥城管署 21 陆 ...

  8. (论坛答疑点滴)为什么设置了DropDownList的AutoPostBack=True还是不能触发SelectedIndexChanged事件?...

    有人问 (1)AutoPostBack="True" <asp:DropDownList id="DropDownList1" runat="s ...

  9. (论坛答疑点滴)怎么在datagrid翻页的时候确认?

    虽然这个要求很奇怪,但是也是有典型性的,比如说我们datagrid的分页想用第x页来表示或者翻页的时候来提示,解决办法:         private void DataGrid1_ItemCrea ...

  10. (论坛答疑点滴)DataGrid的EditCommandColumn如何使用图片作为按钮?

    其实很简单 <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="<img src='upda ...

最新文章

  1. 六款值得推荐的 android 开源框架简介
  2. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
  3. 【转】ArcGIS.Server.9.2.DotNet的ADF的Toolbar工作过程分析
  4. LeetCode - Easy - 28. Implement strStr()
  5. 基于浏览器父子窗口值传递
  6. 真相 | 14 岁编程神童谎言坐实,除了谴责我们该反思什么?
  7. python 图像压缩pca_在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
  8. VScode:创建用户代码片段
  9. Linux操作系统原理与应用(陈莉君)——学习笔记
  10. 计算机毕业论文答辩评语,论文答辩评语
  11. MySQL修改默认端口3306
  12. LCD12864资料汇总(HDG12864F详细说明及驱动源码)
  13. 管理信息系统可行性分析报告_软考复习笔记|项目管理过程与可行性分析及可行性分析报告编写...
  14. 如何将macOS应用程序打包为dmg文件
  15. C# - [实践] 电子词典
  16. Python学习笔记-数据类型(元组 tuple)
  17. 微信公众号网页授权并获取用户信息简要流程
  18. 创新之法,法无常法——小鹏汽车访学笔记
  19. 游戏制作之路(54)自制天空盒
  20. 5G在工业互联网领域的应用进展

热门文章

  1. ISA 2004 Site-To-Site ×××截图详解
  2. hdu P3374 String Problem
  3. Codeforces 295 (Div.1)
  4. NSMutableString基本概念
  5. 一道关于CSS选择器优先级的题
  6. mysql 复制表结构和表数据
  7. 09年关门歇业的15大网站 雅虎旗下4网站上榜
  8. 高校表白App-团队冲刺第十天
  9. vuex , 简单入(liao)门(jie)
  10. 产品上线过程中犯下的错误