动态添加的控件如何取其值

for(int i=0;i<9;i++)
{
checkbox c=new check();
this.controls.add(c);
}然后如何取其值呢?
我一点取值按钮,上面添加的控件就消失了,在网了搜了半天,也没找到答案

解决方案 »

  1.   

    1:
    checkbox c = new check()
    c.checkedchanged += new EventHandler(cb_CheckedChanged)
    void cb_CheckedChanged(..)
    {
    ...
    }
    2:
    foreach(checkbox tmp in this.controls)
    {
    ...
    }
      

  2.   

    foreach(checkbox tmp in this.controls)
    {
    ...
    }
    这段代码基本不运行就过去了,就是说,在提交的时候,那些动态添加的控件已经消失了,
    你可以试一下,两个按钮,一个是生成控件,另一个是取刚生成这些控件的值,点取值按钮时,页面上已经生成的控件就消失了,不能保持这些控件,第一段代码没看明白目的,是要动态添加控件吗
      

  3.   

    生成:
    for(i=0;i<10;i++)
    {
      RadioButtonList chkmc = new RadioButtonList();
      chkmc.ID = "chkmc" + i.ToString();
      myPanel.Controls.Add(chkmc);
    }
    取值:
    string mcs="";
          for (int i = 0; i < 10 ; i++)
            {
                if (Request.Form["chkmc" + i.ToString()] != null)
                {
                    mcs += Request.Form["chkmc" + i.ToString()];
                }
             }
    这是我之前写的,应该能用
      

  4.   

    for(int i = 0; i < 10; i++)
    {
       CheckBox cb = new CheckBox();
       cb.Name = "CustomCb" + i;
       this.Conttrols.Add(cb);
    }下面取值
    for(int i = 0; i < 10; i++)
    {
          CheckBox cb = this.Controls.FindControl("CustomCb" + i) as CheckBox;
          bool checked = cb.Checked;
    }
      

  5.   

    XIEWH() 说的方法可以,但是我没有完全说明我的情况,就是动态添加的控件不是系统自带的控件,是用户控件,自定义控件里边还有系统控件,要取那个值才行,如果只是系统控件,你的答案是百分,思路还是反射取值,刚才又想到一个思路,就是做一个DataTable,然后用如DataList绑定到DataTable,在DataList里动态添加用户控件,这样就可以取值了,我先试试去,待会儿回来结贴,大家谁有好的办法,贴出来共同探讨吧,
      

  6.   

    rroo(天之痕),connynet(暗目)的办法都没有解决点取值按钮后,保持已添加的控件,
    如果把动态添加控件的代码放入Page_Load里,是没有问题的,这个问题在昨天我已经验证过,但是问题是不能在Page_Load里边写,因为到底添加多少个用户控件是根据页面上用户选择的产品来定的,就是添加多少个不确定,举例如一个参观景点需要一天的时间,那么客户选择了十个景点就要动态添加十个用户控件,这个数字无法直接在Page_Load里指定,谢谢楼上各位的热心帮助,我把我刚才想的思路都试验一下,如果有正确答案我会来结贴的!
    PS祝大家春节愉快,给各位同行拜个早年!
      

  7.   

    感谢
    [动网]slightboy,wyd1520,banmuhuangci;
    [经典]flash665,yangliwei,7421021 ,martin0728
    [CSDN]seawolflover,jxf654,NekChan(骑蜗牛看星星),bestshl(快乐的Coder),connynet(暗目),XIEWH,rroo(天之痕) ,chxtp,
    [百度知道]_冻结_ ,drippy,xiangpi_ws
    [QQ]★.凍結~(51076008),深灰色(350763343)
    正确答案Default.aspx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
    {
        //全局静态的链表
        public static ArrayList list = new ArrayList();    protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            //添加
            list.Clear();
            for (int i = 0; i < Convert.ToInt32(TextBox1.Text); i++)
            {
                TextBox t = new TextBox();
                t.ID = "text" + i;
                list.Add(t);
                Panel1.Controls.Add(t);
            }
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            //取值
            string s = "";
            for (int i = 0; i < list.Count; i++)
            {
                TextBox TextBox1 = (TextBox)list[i];
                s += "第" + (i + 1).ToString() + "个文本框的值是:" + Request[TextBox1.ID] + "\r\n";
            }        TextBox2.Text = s;
        }}Default.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
    <form id="form1" runat="server">
        <div>
            生成控件的个数:<asp:TextBox ID="TextBox1" runat="server">1</asp:TextBox> 
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="生成" />
            <asp:Panel ID="Panel1" runat="server" BackColor="#E0E0E0" Height="173px" Width="545px">
            </asp:Panel>
       
        </div>
            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="取值" />
            <br />
            <asp:TextBox ID="TextBox2" runat="server" Height="211px" TextMode="MultiLine" Width="538px"></asp:TextBox>
        </form></body>
    </html>WebUserControl.ascx<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>WebUserControl.ascx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class WebUserControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
    }
    主要用到了静态连接表甭管怎么说,这个问题难我一个春节。。记录一下现在的心情~哼哼哈嘿