ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
997
997
EMPFEHLEN
-
Hallo zusammen,
ich google schon schon etwas länger nach diesem Thema, doch meistens wird es nur in Zusammenhang mit Pages behandelt und nicht mit PostBacks...
Folgendes: Ich habe ein Popup mit einem speichern Button und ich möchte, dass beim Klick auf "speichern" der Datensatz eingetragen und dann das Popup geschlossen wird.
Das Eintragen in die Datenbank erfolgt mittels C# und ist kein Problem, doch wie kann ich aus dem CodeBehind nach der Eintragung ein JavaScript ausführen, dass mir das Popup schließt?
Das Script ist kein Problem, das habe ich schon an einem Standalone-Button getestet (mit OnClientClick) und das funktionierte. Nur diese kombinierte Lösung bereitet mir Kopfzerbrechen...
Ist es überhaupt möglich JavaScript aus dem CodeBehind eines UserControls auszuführen?
Vielen Dank,
Eroli
-
Du könntest z.B. bei einem PostBack das entsprechende JavaScript ausgeben.
Code csharp:1 2 3
if(IsPostBack) //Response.Write ist natürlich nicht die beste Variante. Besser wäre z.B. ein asp:Literal Control zur Ausgabe. Aber da gibt es diverse Möglichkeiten Response.Write("<script type=\"text-javascript\">window.close();</script>);
Noch schöner wäre es, die Daten per JavaScript zu versenden (und nicht über ein Formular) und das Popup zu schließen, sobald die Antwort des Servers da ist.
-
Gerade getestet. Kompiliert ohne Fehler und wirft keine Exception (logisch eigentlich).
Jedoch wird das JavaScript nicht ausgeführt. Ich finde sogar nirgends wo dieser String in den Seitenquelltext hingeschrieben wird...
Auch ein einfaches
war ohne jedes Ergebnis...Code csharp:1
Response.Write("<script language=\"javascript\">alert('hi');</script>");
Woran kann das liegen? Muss ich irgendwo einen ScriptManager platzieren? Wenn ja, wo? Auf der eigentlichen Page (in der das UserControl liegt) oder im UserControl oder erst im eigentlichen Popup (ist ja auch wieder eine "Page" mit eingebettetem UserControl)****?
Hoffe mir kann jemand helfen...
Ciao,
Eroli
EDIT: Mit einem Script-Manager im eigentlichen UserControl(also das eigentliche "PopupUserControl") erscheint der String in Response.Write ganz am Anfang des Framequelltextes....Ausgeführt wird er jedoch nicht?
So sieht mein Frame aus:
Code :1 2 3 4 5 6 7 8 9 10
<script type="text-javascript">alert('hi');</script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script type="text/javascript"> <%--Hier steht das JavaScript drin, dass ich ausführen will!!--> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> [...]
EDIT2:
Folgender Code gibt mir das alert aus:
Code csharp:1
Response.Write("<script language=\"text/javascript\">alert('hi');</script>");
Jedoch habe ich jetzt das Problem, dass meine eigentliche Funktion, die ich aufrufen will, in einem ganz anderem Script-Block liegt. Die Struktur sieht in etwa so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
<script type="text/javascript">CloseWithArg();</script> <%--Das war mein Response.Write()--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script type="text/javascript"> function GetRadWindow() { <%--Diese Funktion soll von meinem Skript aufgerufen werden--> var oWindow = null; if (window.radWindow) oWindow = window.radWindow; else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; return oWindow; } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> [...] </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <%--Ein paar links (CSS-Einbindungen etc)--> </head> <body> <form name="form1" method="post" action="kundenTypPopup.aspx?mode=new&Popup=1" id="form1"> </div> <div> <div id="e2wMiddleCol"> <div id="e2wShadowTop"> <div id="e2wShadowBottom"> <div id="e2wShadowSides"> <!-- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content --> <script type="text/javascript"> function CloseWithArg() { <%--DIESE Funktion will ich aufrufen******--> alert('hi'); var guid = document.getElementById('CustomerTypeControl1_hidGuid').value; var name = document.getElementById('CustomerTypeControl1_hidTypBezeichnung').value; var array = new Array(); array[0] = name; array[1] = guid; GetRadWindow().close(array); } function Close() { GetRadWindow().close(); } </script> [...]<%--Hier folgt der eigentliche Content-->
SkriptBlock-übergreifende Funktionsaufrufe funktionieren nicht, richtig? Muss ich die Funktion CloseWithArg() dann noch einmal mit durch den Response schicken?Geändert von Eroli (15.09.10 um 09:58 Uhr)
-
Der Übersichtlichkeit halber ein neuer Beitrag und kein Edit.
Mein Response.Write sieht derzeit so aus:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Response.Write("<script type=\"text/javascript\">\n" + "function CloseWithArg() {\n" + "alert('1');\n" + "var guid = document.getElementById('CustomerTypeControl1_hidGuid').value;\n" + "alert('2');\n" + "var name = document.getElementById('CustomerTypeControl1_hidTypBezeichnung').value;\n" + "alert('3');\n" + "var array = new Array();\n" + "alert('4');\n" + "array[0] = name;\n" + "alert('5');\n" + "array[1] = guid;\n" + "alert('6');\n" + "GetRadWindow().close(array);\n" + "}\n\n" + "function Close() {\n" + "alert('7');\n" + "GetRadWindow().close();\n" + "}\n" + "CloseWithArg();\n" + "</script>");
Wenn ich das Ganze nun ausführe erscheint direkt nach dem Start zwar das alert('1'), doch weiter schafft es das Skript nicht. Vermutlich findet es die Controls, die es braucht, nicht...
Gibt es hier eine andere Möglichkeit als die benötigten Variablen (die sich das Skript sonst selber gesucht hätte) aus dem Codebehind mitzugeben?
-
Hallo,
habe jetzt alle anderen Skripts mit in das Skript integriert, sodass sich alles in einem SkriptBlock befindet. Jetzt funktioniert es endlich.
Ich finde diese Lösung zwar unschön, aber es funktioniert. Interesse halber: Kann man das eleganter lösen?
Ich warte noch 2 Tage oder auf eine Antwort und dann markiere ich das hier als erledigt.
Danke für die Hilfe!
Ciao,
Eroli
-
SkriptBlock-übergreifende Funktionsaufrufe sind überhaupt kein Problem. Sonst könnte man ja auch keine externen Javascript Bibliotheken einbinden. Auch spielt die Reihenfolge keine Rolle.
Ich verstehe im Moment deinen Aufbau noch nicht ganz. Du möchtest ein Fenster schließen, wenn dort ein Postback durchgeführt wurde? Dazu musst du doch lediglich beim Postback das entsprechende Javascript ausgeben. Hier mal kurz etwas Code.
Da ich alles aus dem Gedächtnis tippe, sind Syntaxfehler vorbehalten :-D
CodebehindHTML-Code:<!--...--> <script type="text/javascript"> /* <![CDATA[ */ function hallo() { alert("Hallo Tutorials.de"); } /* ]]> */ </script> <!--Hier ist jetzt irgendein Control mit der id "foobar"--> <asp:Irgendwas runat="server" id="foobar"></asp:Irgendwas> <asp:PlaceHolder runat="server" id="placeholder_script" visible="false"> <script type="text/javascript"> /* <![CDATA[ */ //wenn du hier noch irgendwas mit foobar machen willst, dann so document.getElementById('<%=foobar.ClientID %>'); //alle irgendwo definierten funktionen sind auch hier verfügbar hallo(); window.close(); /* ]]> */ </script> </asp:PlaceHolder> <!--...-->
Code csharp:1 2 3 4 5 6 7 8 9 10
//.... protected void Page_Load() { if(IsPostBack) { placeholder_script.Visible = true; return; } } //....
Falls dich das nicht zum Ziel führt, musst du nochmal erklären, was du eigentlich vor hast.
Ähnliche Themen
-
Zugriff auf Master Page von User Control aus
Von denyo85 im Forum .NET Web und KommunikationAntworten: 5Letzter Beitrag: 11.06.09, 18:05 -
User Control vererben in NET 3.0
Von CongoFX im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 08.08.07, 20:19 -
[VB .Net 2005] User Control
Von AvalanchRider im Forum .NET Windows FormsAntworten: 6Letzter Beitrag: 27.10.06, 17:31 -
user control dynamisch hinzufügen
Von jenno im Forum ASPAntworten: 0Letzter Beitrag: 24.10.05, 21:49 -
JavaScript und CodeBehind
Von YveX im Forum .NET ArchivAntworten: 5Letzter Beitrag: 26.07.05, 16:21





Zitieren

Login





