JordanTrajkov Ответов: 0

Добавление / удаление пользовательских элементов управления программно в заполнитель


Я делаю один asp.net приложение web forms, я создаю пользовательский элемент управления, в этот пользовательский элемент управления я вставляю несколько стандартных элементов управления .net. Теперь в моей странице.aspx, который я хочу, динамично, чтобы вставить этот элемент управления пользователя. Я поставил кнопку, что-то вроде "Добавить новый элемент управления".
Если я нажму на него, то добавлю новый элемент управления на страницу. И все это прекрасно работает.

У меня есть проблема в удалении этого элемента управления. Я пишу функцию для удаления. Но в первый раз, когда я нажимаю на него, он не удаляет элемент управления, я должен нажать еще раз, чтобы удалить последний элемент управления. Я думаю, что это что-то с обратной связью, не знаю, почему при первом обратном посте он не снимает контроль.

Я добавляю программные элементы управления в заполнитель, который находится внутри UpdaPanel. Вот код c#, как я это делаю, пожалуйста, кто-нибудь знает, где я делаю ошибку?

public partial class Clasess_And_Events : System.Web.UI.Page
{
    protected int NumberControlsForCategory
    {
        get { return (int)ViewState["NumControlsForCategory"]; }
        set { ViewState["NumControlsForCategory"] = value; }
    }
 

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            //Initiate the counter of dynamically added controls
            this.NumberControlsForCategory = 0;
            
        }
        else
        {
                //Controls must be repeatedly be created on postback
                this.createControlsCategory();
          
        }

 
           
    }

    private void createControlsCategory()
    {
        int count = this.NumberControlsForCategory;

        for (int i = 0; i < count; i++)
        {
             

            Control myUserControl = (Control)Page.LoadControl("UserControls/CategoryDropdown.ascx");
            myUserControl.ID = "CategoryControl_ID_" + i.ToString();

           
            PlaceHolder1.Controls.Add(myUserControl);
        }
    }
 

    

    protected void Add_Controll_Click(object sender, EventArgs e)
    {


        Control myUserControl = (Control)Page.LoadControl("UserControls/CategoryDropdown.ascx");
        myUserControl.ID = "CategoryControl_ID_" + NumberControlsForCategory.ToString();

         
        PlaceHolder1.Controls.Add(myUserControl);

        this.NumberControlsForCategory++;

        LinkButton10.Visible = true;
    }

  


    protected void Remove_Control_Click(object sender, EventArgs e)
    {
         
                Control myUserControl = (Control)Page.FindControl("CategoryControl_ID_" + NumberControlsForCategory.ToString());
                PlaceHolder1.Controls.Remove(myUserControl);
                this.NumberControlsForCategory--;
    }
}


Что я уже пробовал:

Я делаю один asp.net приложение web forms, я создаю пользовательский элемент управления, в этот пользовательский элемент управления я вставляю несколько стандартных элементов управления .net. Теперь в моей странице.aspx, который я хочу, динамично, чтобы вставить этот элемент управления пользователя. Я поставил кнопку, что-то вроде "Добавить новый элемент управления". Если я нажму на него, то добавлю новый элемент управления на страницу. И все это прекрасно работает.

У меня есть проблема в удалении этого элемента управления.

0 Ответов