2016-03-09 2 views
0

У меня есть ASP.NET UpdatePanel, где я добавляю другие панели динамически. Каждая из этих небольших панелей имеет свою собственную кнопку «Удалить». Когда я нажимаю на одну из этих кнопок «Удалить», я хочу удалить соответствующую панель. Вместо этого происходит следующее: я нажимаю «Удалить», ничего не происходит, тогда, когда я делаю другую операцию, которая вызывает PostBack, панель удаляется. (Слишком поздно)Как я могу удалить динамический элемент управления из UpdatePanel одним нажатием кнопки?

Я рисую каждый динамический элемент управления на PostBack, и когда я нажимаю кнопку «Удалить», его обработчик (который удаляет панель, которую я хочу), возникает только после того, как я рисую каждый элемент управления, поэтому я не вижу никаких изменений немедленно ,

Вот код, который вызывается на каждом постбэка:

private void drawForm() 
    { 
if (Session["controls"] != null) 
     { 
      PlaceHolder1.Controls.Clear(); 
      Ccontrols = (Dictionary<Label, Control>)Session["controls"]; 
      int index = 1; 
      foreach (var entry in Ccontrols) 
      { 
       Panel cPanel = new Panel(); 
       cPanel.CssClass = "controldiv"; 
       cPanel.ID = "cpanel" + index; 
       Button closebtn = new Button(); 
       closebtn.Text = "Delete"; 
       closebtn.ID = "closebtn" + index++; 
       closebtn.Click += new EventHandler(closeControl); 
       cPanel.Controls.Add(entry.Key); 
       cPanel.Controls.Add(entry.Value); 
       cPanel.Controls.Add(closebtn); 
       cPanel.Controls.Add(new LiteralControl("<br />")); 
       cPanel.Controls.Add(new LiteralControl("<br />")); 
       closebtn.CssClass = "closebutton"; 
       PlaceHolder1.Controls.Add(cPanel); 

      } 

      FormPanel.Update(); 
     } 
     else 
     { 
      FormPanel.ContentTemplateContainer.Controls.Clear(); 
     } 

Вот обработчик Кнопка удаления:

private void closeControl(object sender, EventArgs e) 
    { 
     String id = (sender as Button).ID; 
     PlaceHolder1.Controls.Remove(PlaceHolder1.FindControl("cpanel" + id)); 
     foreach (Control c in (sender as Button).Parent.Controls) 
     { 
      if (c is Label) 
      { 
       Ccontrols.Remove((Label)c); 
      } 
     } 
     Session["controls"] = Ccontrols; 
     drawForm(); 

    } 

Заранее спасибо

ответ

0

Я думаю, что есть какая-то проблема с триггерами в UpdatePanel. Я бы мог помочь вам лучше, если бы вы разместили свой html-код, где вы создали свою UpdatePanel.