用户单击删除按钮时如何删除动态控件(文本框和按钮)

时间:2010-12-25 20:07:06

标签: asp.net

这是我的代码,我想知道如何在用户点击删除按钮时添加一些代码来删除动态控件(文本框和按钮)。请帮帮我T_T

使用System; 使用System.Collections.Generic; 使用System.Linq; 使用System.Web; 使用System.Web.UI; 使用System.Web.UI.WebControls; 使用System.Globalization;

public partial class _Default:System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        CreateTextBox();
    }
    else
    {
        Session["arrayTextBox"] = null;
        Session["arrayButton"] = null;
    }
}

protected void CreateTextBox()
{
    List<TextBox> arrayTextBox = new List<TextBox>();

    List<Button> arrayButton = new List<Button>();

    if (TextBox1.Text != "")
    {            
        if (Session["arrayTextBox"] != null)
        {
            arrayTextBox = (List<TextBox>)Session["arrayTextBox"];
            arrayButton = (List<Button>)Session["arrayButton"];
        }

        TextBox aTextBox = new TextBox();

        aTextBox.ID = "aTextBox" + arrayTextBox.Count.ToString();
        aTextBox.Text = TextBox1.Text;

        Button ButtonDelete = new Button();
        ButtonDelete.ID = "ButtonDelete" + arrayButton.Count.ToString();
        ButtonDelete.Text = "Delete";

        //if (TextBox2.Text != "")
        //{
        //    String red = TextBox2.Text.ToString().Substring(0, 2);
        //    String green = TextBox2.Text.ToString().Substring(2, 2);
        //    String blue = TextBox2.Text.ToString().Substring(4, 2);

        //    int r = int.Parse(red, NumberStyles.AllowHexSpecifier);
        //    int g = int.Parse(green, NumberStyles.AllowHexSpecifier);
        //    int b = int.Parse(blue, NumberStyles.AllowHexSpecifier);

        //    aTextBox.BackColor = System.Drawing.Color.FromArgb(r, g, b);
        //}

        arrayTextBox.Add(aTextBox);
        arrayButton.Add(ButtonDelete);

        for(int i=0;i<arrayTextBox.Count;i++)
        {              
            PlaceHolder1.Controls.Add(arrayTextBox[i]);
            PlaceHolder1.Controls.Add(arrayButton[i]);
            PlaceHolder1.Controls.Add(new LiteralControl(@"<br />"));
        }

        //ButtonDelete.Click += new EventHandler(ButtonDelete_Click);


        Session["arrayTextBox"] = arrayTextBox;
        Session["arrayButton"] = arrayButton;

        TextBox1.Text = "";
        //TextBox2.Text = "";
    }


}

}

2 个答案:

答案 0 :(得分:0)

foreach arrayTextBox并获取TextBox,然后使用PlaceHolder1.Controls.Remove(Textbox)

答案 1 :(得分:0)

您可以使用以下代码。 注意:我使用按钮的CommandArgument来存储相应文本框的id,然后在btn click事件中使用Page.Controls.Remove:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        CreateTextBox();
    }
    else
    {
        Session["arrayTextBox"] = null;
        Session["arrayButton"] = null;
    }
}

protected void ButtonDelete_Click(object Sender, EventArgs e)
{
    Button btn = Sender as Button;
    if(btn != null)
    {
        String szTextControlID = btn.CommandArgument;
        Control ctl = Page.FindControl(szTextControlID);
        Page.Controls.Remove(ctl);
        Page.Controls.Remove(btn);
    }
}

protected void CreateTextBox()
{
    List<TextBox> arrayTextBox = new List<TextBox>();

    List<Button> arrayButton = new List<Button>();

    if (TextBox1.Text != "")
    {            
        if (Session["arrayTextBox"] != null)
        {
            arrayTextBox = (List<TextBox>)Session["arrayTextBox"];
            arrayButton = (List<Button>)Session["arrayButton"];
        }

        TextBox aTextBox = new TextBox();

        aTextBox.ID = "aTextBox" + arrayTextBox.Count.ToString();
        aTextBox.Text = TextBox1.Text;

        Button ButtonDelete = new Button();
        ButtonDelete.ID = "ButtonDelete" + arrayButton.Count.ToString();
                ButtonDelete.CommandArgument = aTextBox.ID;
        ButtonDelete.Text = "Delete";
                ButtonDelete.Click += new EventHandler(ButtonDelete_Click);

        //if (TextBox2.Text != "")
        //{
        //    String red = TextBox2.Text.ToString().Substring(0, 2);
        //    String green = TextBox2.Text.ToString().Substring(2, 2);
        //    String blue = TextBox2.Text.ToString().Substring(4, 2);

        //    int r = int.Parse(red, NumberStyles.AllowHexSpecifier);
        //    int g = int.Parse(green, NumberStyles.AllowHexSpecifier);
        //    int b = int.Parse(blue, NumberStyles.AllowHexSpecifier);

        //    aTextBox.BackColor = System.Drawing.Color.FromArgb(r, g, b);
        //}

        arrayTextBox.Add(aTextBox);
        arrayButton.Add(ButtonDelete);

        for(int i=0;i<arrayTextBox.Count;i++)
        {              
            PlaceHolder1.Controls.Add(arrayTextBox[i]);
            PlaceHolder1.Controls.Add(arrayButton[i]);
            PlaceHolder1.Controls.Add(new LiteralControl(@"<br />"));
        }




        Session["arrayTextBox"] = arrayTextBox;
        Session["arrayButton"] = arrayButton;

        TextBox1.Text = "";
        //TextBox2.Text = "";
    }


}