移除动态添加的控件

发表于:2007-06-30来源:作者:点击数: 标签:
好像问动态添加控件的人很多,问题大多集中 (1)动态添加的按钮不能提交 (2)动态添加的文本框取不到值 (3)动态添加的控件页面刷新后消失 (4)动态添加的控件页面刷新重复添加 (5)动态添加的控件不知道怎么移除 问题百出,但是其实这些都是非常简单的
好像问动态添加控件的人很多,问题大多集中
(1)动态添加的按钮不能提交
(2)动态添加的文本框取不到值
(3)动态添加的控件页面刷新后消失
(4)动态添加的控件页面刷新重复添加
(5)动态添加的控件不知道怎么移除
问题百出,但是其实这些都是非常简单的,可能疏忽了一点两点,补充以前写的2篇文章(以前写的比较乱)
这个页面实现:
点击添加按钮-》添加一个文本框一个提交按钮-》点击提交按钮输出文本框值
点击删除按钮(就是前面那个添加按钮)-》移除文本框和提交按钮
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace csdn2
{
    /**//// <summary>
    /// WebForm65 的摘要说明。
    /// </summary>
    public class WebForm65 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Button1;
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            if(Page.IsPostBack) 
            { 
                if(ViewState["adduc"]!=null) 
                { 
                    adduc(); 
                } 
            } 
        }

        Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /**//// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {    
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void Button1_Click(object sender, System.EventArgs e)
        {
            if(ViewState["adduc"]==null) 
            { 
                adduc(); 
                ViewState["adduc"]=1; 
            } 
            else
            {
                deluc(); 
                ViewState["adduc"]=null; 
            }
        }

        private void Button2_Click(object sender, System.EventArgs e)
        {
            TextBox t=(TextBox)Page.FindControl("t");
            if(t!=null)Response.Write(t.Text);        
        }

        public void adduc()
        {
            TextBox t=new TextBox();
            t.ID="t";
            Page.Controls[1].Controls.Add(t);
            this.Button1.Text="删除";
            Button b=new Button();
            b.Text="提交";
            b.ID="b";
            b.Click += new System.EventHandler(this.Button2_Click);
            Page.Controls[1].Controls.Add(b);
        }

        public void deluc()
        {
            Page.Controls[1].Controls.Remove(Page.FindControl("t"));
            Page.Controls[1].Controls.Remove(Page.FindControl("b"));
            this.Button1.Text="添加";
        }
    }
}

原文转自:http://www.ltesting.net