需要动态生成Checkbox,并取得Checkbox的值
.cs中动态生成Checkbox的代码: public void GetPanelControl()
        {
            DataTable dt = DataLayer.GetAllPEQUIPSource();
            
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                CheckBox ckbox = new CheckBox();
                ckbox.AutoPostBack = false;
                string str= dt.Rows[i]["PIP"].ToString();
                int count = str.Length;
                ckbox.Text = str.Substring(str.LastIndexOf('.')+1,2);
                
                ckbox.ID = "ckbox" + i;
                this.panList.Controls.Add(ckbox);
            }
        }现在如何能取到Checkbox的值???
我每次点击提交按钮时,生成的Checkbox都消失了,什么原因???动态生成Checkbox  遍历Checkbox

解决方案 »

  1.   

    动态创建checkbox和获取值:
    http://www.cnblogs.com/insus/archive/2013/04/23/3035447.html
      

  2.   

    动态生成的控件,放在!Page.IsPostback外面。当发生PostBack时,需要重新生成一次。protected void Page_Load(object sender, EventArgs e)
            {
                for (int i = 0; i <= 10; i++)
                {
                    CheckBox ckbox = new CheckBox();
                    ckbox.Text = i.ToString();
                    PlaceHolder1.Controls.Add(ckbox);
                }
            }        protected void btnSubmit_Click(object sender, EventArgs e)
            {
                string checkeditem = "";
                foreach (Control ctl in PlaceHolder1.Controls)
                {
                    if (ctl is CheckBox)
                    {
                        if (((CheckBox)ctl).Checked)
                        {
                            checkeditem += ((CheckBox)ctl).Text;
                            checkeditem += "<br/>";
                        }
                    }
                }
                Response.Write(checkeditem);
            }
      

  3.   


    非常感谢,问题已经解决我还有个小问题想要问下
    每次我遍历页面的控件(服务器端的或Html的),不知如何下手,能否提供一个思路
      

  4.   

    遍历控件
    void IterateThroughChildren(Control parent)   //遍历所有控件
        {
          foreach (Control c in parent.Controls)
          {
            if (c.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox") &&
                  c.ID == null)        //找到所有新创建的TextBox控件(新创建的TextBox的ID为空,有别于页面中id="txtTBCount"的TextBox)
            {
              ((TextBox)c).Text = "..."; //改变TextBox的属性。
              
            }
          }
        }
      

  5.   


    非常感谢,问题已经解决我还有个小问题想要问下
    每次我遍历页面的控件(服务器端的或Html的),不知如何下手,能否提供一个思路是不清楚怎么遍历? 
    提交后控件可以在后台:foreach(Control ctl in 容器.Controls)遍历。 
    前台的遍历可以使用JavaScript。
      

  6.   


    控件不是分为服务器和Html的吗?就是不知道如何判断是服务器还是Html,即If如何写??
      

  7.   


    控件不是分为服务器和Html的吗?就是不知道如何判断是服务器还是Html,即If如何写??

                foreach(Control ctl in this.Controls)
                {
                    if(ctl is Button) //服务器控件
                    {
                    
                    }
                    if(ctl is System.Web.UI.HtmlControls.HtmlButton) //html控件
                    {
                    
                    }
                }