2012-03-30 3 views
0

aufgerufenen Hinweise, warum das Button-Klick-Ereignis Skript nicht erfolgreich einfügen?Javascript eingefügt wird nicht angezeigt, wenn von updatepanel Ereignis

Hier ist der wirklich unkomplizierte Code.

C#:

public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e){ 
     ClientScript.RegisterStartupScript(Page.GetType(), "scriptalert", "<script type=\"text/javascript\">alert('testLOAD');</script>;", false); 
     btnAdd.Click += new EventHandler(btnAdd_Clicked); 
} 

protected void btnAdd_Clicked(Object sender,System.EventArgs e){ 
    ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 
} 

}

HTML:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
<script type="text/javascript"> 
alert("testSCRIPT"); 

function func() { 
    alert("testFUNC"); 
} 
</script> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:ScriptManager ID="ToolkitScriptManager1" runat="server" /> 
    <div id="View" style="height: 50%; width:20%; "> 
     blahblahblah 
    </div> 
    <div id="Addd" style="height: 50%; width:100%;"> 
     <asp:UpdatePanel ID="UpdateAdd" runat="server"> 
      <ContentTemplate> 
       <asp:Button ID="btnAdd" runat="server" Text="Add" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
</asp:Content> 

Auf Seite Last ich zwei Warnungen Brennen, nämlich "testload" und "Testscript", aber wenn ich die Taste Knopf nichts passiert (es soll eine dritte Warnung geben) ... Eingecheckt im Debugger, wird das Ereignis aufgerufen und ausgeführt, aber wenn ich die Seitenquelle anschaue, wurde nichts eingefügt.

Ich habe den Verdacht, dass das Problem an anderer Stelle liegen könnte, da das Kopieren in eine neue Seite ohne eine Masterseite (d. H. Ohne ASP: Content-Tags) funktioniert. Ich hatte jedoch keine Probleme mit anderen Script-Einfügungen, also warum diese?

Antwort

0

Ich fand, was falsch war^^

Es gibt eine Streu Semikolon im Skript war ich wurde eingeführt wird, die es brechen gemacht:./

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 

Eine solche dummen Fehler so viel Frustration verursacht. .. Tut mir leid, Leute!

1

Das Problem entsteht durch die Schaltfläche im Update-Bereich. Um dieses Problem zu beheben, denke ich, dass Sie ScriptManager anstelle von ClientScript.RegisterStartupScript-Methode verwenden können. Etwas wie das Folgende sollte es tun;

ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type=\"text/javascript\">func();</script>;", true); 

statt

ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type=\"text/javascript\">func();</script>;", false); 
+0

Ich habe eine andere Seite, wo dies in einem Update-Panel gut funktioniert. Versuchte diesen Code, es sagt 'RegisterStartupScript' kann nicht von einer Instanz aufgerufen werden, ich denke, es ist eine statische Methode. die Verwendung von 'ScriptManager' anstelle von 'ClientScript' behebt das Problem ebenfalls nicht. – Oofpez

0

Sie sollten so etwas wie dieses

String script = versuchen "alert ('etwas');";

this.ClientScript.registerclientscriptblock (this.GetType(), "scriptfunc", script, true);

oder platzieren Sie Ihre Funktion innerhalb des page_load-Ereignisses und rufen Sie die Funktion in der Button.OnClientClick-Eigenschaft auf.

+0

mit OnClientClick ist in diesem Fall nicht nützlich, da ich Sachen im Code hinter laufen lassen und dann das Javascript tun. obwohl es die Funktion so aufruft, würde Javascript laufen, bevor ich es will. – Oofpez

Verwandte Themen