处理动态HtmlInputSubmit控件的ServerClick事件

时间:2012-11-12 09:15:17

标签: asp.net event-handling submit

我是ASP .Net编程的初学者 我正在开发一个小的培训Web应用程序 我开发了一个Web表单,用户可以在其中将项目添加到购物车中 用户的购物车与会话变量匹配。

我在Page_PreRender事件处理程序中检查用户的购物车是否为空 如果购物车不是空的,则表格会插入表格中 购物车中的每件商品都与表格中的一行相匹配 项目行包含一个HtmlInputSubmit,用于从购物车中删除该项目。

这是我编写的用于动态创建“删除项目”的代码HtmlInputSubmit:

submitSupprimerArt = new HtmlInputSubmit();
cellTblCaddie.Controls.Add(submitSupprimerArt);

submitSupprimerArt.Value = "Supprimer " + article.Id;
submitSupprimerArt.Attributes.Add("articleId", article.Id);
submitSupprimerArt.ServerClick += new EventHandler(submitSupprimerArt_Click);

当用户单击HtmlInputSubmit时,会进行回发,但不会调用submitSupprimerArt_Click事件处理程序。
有人可以给我一个理由吗?

1 个答案:

答案 0 :(得分:0)

我不想,但我终于看到了培训申请的解决方案 我可以描述解决问题所需的操作,但我无法准确解释为什么必须完成操作。

诀窍是在ASPX页面中声明一个PlaceHolder控件 必须使用Page_Load事件处理程序中的“删除项目”按钮填充PlaceHolder,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    // ...

    caddie = (ListeArticles)this.Session["caddie"];
    if (caddie != null)
    {
        foreach (Article article in caddie)
        {
            btnSupprimerArt = new Button();
            this.phBoutonsSupprArt.Controls.Add(btnSupprimerArt);

            btnSupprimerArt.ID = "btnSupprimerArt" + article.Id;
            btnSupprimerArt.Command += new CommandEventHandler(btnSupprimerArt_Command);
            btnSupprimerArt.CommandName = article.Id;
            btnSupprimerArt.Text = "Supprimer " + article.Id;
        }
    }
}

PlaceHolder的Controls属性从Page_PreRender事件处理程序中清除 然后从Page_PreRender事件处理程序创建“删除项目”按钮 这次将“删除项目”按钮插入表格单元格中。

结论(需要修改):
将处理程序注册到动态控制事件似乎有点棘手 显然,每个事件处理程序必须在Page_Load事件之后注册。