Ich habe eine einfache ASP.Net-Seite mit einer Schaltfläche und einem Literal Control darauf. Auf Knopfdruck erzeuge ich ein neues dynamisches Steuerelement (imagebutton) und rende es über HtmlTextWriter auf das Literal. Bei der Erstellung von Steuerelementen füge ich auch ein onClick-Ereignis hinzu, das nicht ausgelöst wird. Hier ist mein Code:Dynamisch erstellt Steuerelement gerendert über HtmlTextWriter löst keine Ereignisse
aspx
<asp:Button ID="btnCreate" runat="server" Text="Create" OnClick="btnCreate_Click" />
<asp:Literal ID="lit" runat="server"></asp:Literal>
cs
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnCreate_Click(object sender, EventArgs e)
{
ImageButton dynBtn = new ImageButton();
dynBtn.ID = "1";
dynBtn.ImageUrl = "http://cdn.mysitemyway.com/etc-mysitemyway/icons/legacy-previews/icons/matte-blue-and-white-square-icons-symbols-shapes/118240-matte-blue-and-white-square-icon-symbols-shapes-power-button.png";
dynBtn.Click += new ImageClickEventHandler(dynBtn_click);
lit.Text = RenderControl(dynBtn);
}
private void dynBtn_click(object sender, ImageClickEventArgs e)
{
Page.Response.Write("hello!");
}
private string RenderControl(Control control)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter writer = new HtmlTextWriter(sw);
control.RenderControl(writer);
return sb.ToString();
}
}
Die Steuerung wird ohne Fehler erstellt zu werden, aber das Ereignis fireing nicht.
versuchen, die Kontrolle zu Literal statt Text – techspider