0

this is my code and i want to know how i add some code to delete dynamic control(textbox and button) when user click delete button. Please help me T_T

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using 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 Answers 2

0

foreach the arrayTextBox and get TextBox, then use PlaceHolder1.Controls.Remove(Textbox)

Sign up to request clarification or add additional context in comments.

Comments

0

You can use the code below. Note: I used CommandArgument of the button to store the id of corresponding textbox and then use Page.Controls.Remove in the btn click event:

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 = "";
    }


}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.