所有突然动态创建的图像按钮的点击事件都不会触发。

时间:2009-05-25 08:01:52

标签: asp.net events dynamic imagebutton

我有一个动态创建联系人表的页面,如果联系人收到了电子邮件,我还会创建一个带有点击事件的图像按钮。我在页面的其余部分有一个类似的功能,它可以完美地运行。我以前用过这个没有任何问题:

protected void CreateContactsList(IQueryable<AA_BranschFinder.Login.vyWebKontaktpersoner> lContacts) // Creates a table in the aspx from an IQueryable List 
        {
            if (1 == 1)
            {
                htmlTblContactsContent.Rows.Clear();

                foreach (var p in lContacts)
                {
                    HtmlTableRow tr = new HtmlTableRow();
                    HtmlTableCell tdName = new HtmlTableCell();
                    HtmlTableCell tdCompanyName = new HtmlTableCell();
                    HtmlTableCell tdEmailAdress = new HtmlTableCell();
                    tdName.InnerHtml = p.strFnamn + " " + p.strEnamn;
                    tdCompanyName.InnerHtml = p.strNamn;

                    //Displays an image if the contacts has an email
                    if (p.strEpost != null)
                    {
                        ImageButton imgEmail = new ImageButton();
                        imgEmail.CommandArgument = p.intKundID.ToString();
                        imgEmail.ImageUrl = "images/symbol_letter.gif";
                        imgEmail.CssClass = "letter";
                        imgEmail.Click +=new ImageClickEventHandler(imgEmail_Click);
                        tdEmailAdress.Controls.Add(imgEmail);
                    }
                    tr.Cells.Add(tdCompanyName);
                    tr.Cells.Add(tdEmailAdress);
                    tr.Cells.Add(tdName);
                    htmlTblContactsContent.Rows.Add(tr);
                }
            }

        }

        void imgEmail_Click(object sender, ImageClickEventArgs e)
        {

此处断点                 throw new NotImplementedException();             }

该页面位于java弹出窗口中。但我有类似事件创建的分页号码,工作正常。但它们是Linkbuttons。

4 个答案:

答案 0 :(得分:0)

你在哪里调用Create方法?您需要在其他事件处理程序运行之前执行此操作,最好是在Page.Init中运行。否则,回发到页面的数据将被指示为尚不存在的控件触发事件。

我还要确保您为ImageButton提供ID。它将使调试变得更加容易。

imgEmail.ID = String.Format("EmailImageButton_{0}", p.intKundID);

另一种解决方案是查看Request对象中的__eventtarget和__eventargument参数,并查看在那里单击了哪个按钮。

答案 1 :(得分:0)

你必须在每个回发上创建动态控件。还要检查imgEmail_Click事件处理程序中的代码;如果您使用.NET IDE的Alt + Shift + F10方法创建了事件处理程序方法,那么您可能没有删除此行 -

throw new Exception("The method or operation is not implemented.");

答案 2 :(得分:0)

如果我没有错误,那么imagebutton是一个提交类型的按钮,而linkbutton是一个带有javascript的a-tag。也许改变你的图像按钮点击(即usesubmitbehaviour设置为false)将解决你的问题。

答案 3 :(得分:0)

确保在回发中添加了事件处理程序。在初始页面加载时添加它时,将不会处理该事件! (刚遇到并自己解决了这个问题。)