У меня есть 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();
}
Заранее спасибо