我有一个动态创建联系人表的页面,如果联系人收到了电子邮件,我还会创建一个带有点击事件的图像按钮。我在页面的其余部分有一个类似的功能,它可以完美地运行。我以前用过这个没有任何问题:
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。
答案 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)
确保在回发中添加了事件处理程序。在初始页面加载时添加它时,将不会处理该事件! (刚遇到并自己解决了这个问题。)