首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过单击按钮从UpdatePanel中删除动态控件?

问如何通过单击按钮从UpdatePanel中删除动态控件?
EN

Stack Overflow用户
提问于 2016-03-09 22:34:01
回答 1查看 24关注 0票数 0

我有一个ASP.NET UpdatePanel,我可以在其中动态添加其他面板。这些小面板中的每一个都有自己的“删除”按钮。当我点击其中一个"Delete“按钮时,我想要删除相应的面板。相反,发生的情况是:我按下“删除”,什么也没有发生,然后当我执行另一个导致PostBack的操作时,面板被删除。(为时已晚)

我在PostBack上绘制每个动态控件,当我单击“删除”按钮时,它的处理程序(删除我想要的面板)仅在我绘制每个控件之后才会发生,所以我不会立即看到任何更改。

下面是每次回发时调用的代码:

代码语言:javascript
复制
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();
        }

下面是DeleteButton处理程序:

代码语言:javascript
复制
 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();

    }

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-03-11 05:42:21

我认为UpdatePanel中的触发器有问题。如果你愿意在你创建UpdatePanel的地方发布你的html代码,我将能够更好地帮助你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35894470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档