Laden...

HttpResponse in neuem Fenster öffnen

Erstellt von BruderKotlett vor 17 Jahren Letzter Beitrag vor 17 Jahren 6.239 Views
B
BruderKotlett Themenstarter:in
87 Beiträge seit 2005
vor 17 Jahren
HttpResponse in neuem Fenster öffnen

Hallo zusammen,

ich habe folgende Methode:


public static void SendCSV(DataTable dt, string fileName, HttpResponse Response)
{
   Response.Clear();
   Response.ClearHeaders();
   Response.Buffer= true;
   Response.ContentType = "text/cvs";
   Response.AddHeader("Content-Disposition",string.Format("inline;filename={0}", fileName));
   Response.ContentEncoding = System.Text.Encoding.Default;
   ProduceCSV(dt, Response.Output);  // Hier wird mein Stream erstellt
   Response.Flush();
   Response.End();
}

Diese ist soweit OK. Wenn ich auf meinen LinkButton klicke, dann öffnet sich ein kleines Fenster in dem der Benutzer auswählen kann, "Öffnen", "Speichern" oder "Abbrechen". Sobald es "Öffnen" geklickt wird, erscheint die CSV-Datei im selben Fenster in dem ich den Link angeklickt habe.
Jetzt meine Frage. Ist es möglich, das in einem separaten Fenster zu öffnen? Also sobald der Benutzer auf den LinkButton klickt, öffnet sich der/das Response in einem neuen Fenster.

Würde mich für eine Lösung oder auch Tipps freuen.

Gruß

Kotlett

S
8.746 Beiträge seit 2005
vor 17 Jahren

Jetzt frag ich mich nur, was der gepostete Code mit Fenstern, klickbaren Links und ähnlichem zu tun hat....

B
BruderKotlett Themenstarter:in
87 Beiträge seit 2005
vor 17 Jahren

Hmmm.... anderer Versuch es zu erklären.*Diese Methode wird aufgerufen, wenn ein Benutzer auf einen LinkButton klickt. *Ich möchte jetzt, dass sich das HttpResponse (aus meiner Methode) nicht im selben Fenster öffnet in der der LinkButton geklickt wurde. *sondern es soll eine neues Internet Explorer Fenster geöffnet werden *hier kann dann ausgewählt werden "Öffnen", "Speichern"...

Ich denke, dass ich das nicht besser erklären kann.

A
154 Beiträge seit 2005
vor 17 Jahren

Das ganze musst du anders aufbauen.
Statt dem Linkbutton nimmst du einen Hyperlink.
Dieser öffnet über JavaScript ein Popup.

Hier kannst du direkt das File als URL angeben, oder falls noch Arbeiten zu erledigen sind, eine Site mit Übergabeparameter für das File bzw andere Daten um das File bereit zu stellen. Ausgeben kannst du das dann mit Response.WriteFile(fileName);

223 Beiträge seit 2005
vor 17 Jahren

Versuch es mal hiermit:

openScript = "<" + "script language="+"JavaScript"+">" +"var win = window.open('"neues Fenster") + "' , " +"'neues Fenster', " +"'width=1024,height=768,resizable=yes,menubar=yes,location=yes,hotkeys=yes,scrollbars=yes,status=yes,toolbar=yes');" +"</" + "script>";
Response.Write(openScript);

javascript open() parameter:

http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=window.open

gruß

Bescheidenheit ist wohl die einzige Gabe mit der man nicht angeben kann ohne sie dabei zu zerstören. 8)

L
497 Beiträge seit 2006
vor 17 Jahren

Oder, wenn Du kein JS verwenden willst: <a href="deineUrl" target="_blank">

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

B
249 Beiträge seit 2005
vor 17 Jahren

Das automatische erzeugen von popups über javascript code beim postback dürfte fehlschlagen, weil poupblocker dies nicht erlauben.
Daher empfehle ich dir direkt, also ohne postback auf der gleichen seite, über javascript (button) oder über einen hyperlink (target=_blank) ein neues fenster zu öffnen.

B
BruderKotlett Themenstarter:in
87 Beiträge seit 2005
vor 17 Jahren

Danke für eure Hilfe. Ich habe das jetzt so gelöst:

Response.Write("<script language=javascript>window.open('" + url + "','_blank')</script>");

Mit diesem Script öffne ich eine ASPX-Seite. Gibt es hier die Möglichkeit, das "Scließen-Ereignis" abzufangen, also wenn der Benutzer diese Seite beendet?

Denn ich möchte es so haben, dass maximal nur eine Seite geöffnet weden darf. Denn so oft der Link mit diesem Script geklickt wird, genau so oft öffnet sich natürlich eine neue Seite.

A
154 Beiträge seit 2005
vor 17 Jahren

Wenn du einen Namen für die Seite vergibst, dann wird immer wieder dasselbe Popup verwendet. Vorteil wäre hier das es immer nur einmal dieses Fenster existieren kann, Nachteil ist allerdings das das Fenster ohne Warnung mit neuem Inhalt geladen wird.

Also anstelle von '_blank' ordentlichen Namen wählen.

Das Schließen kannst du auch über JavaScript abfangen.
Entweder in deiner Ausgangsseite die Referenc auf das Popup speichern und das OnUnload Event registrieren.

win= window.open(...);
win.onunload = DeinFensterWirdBeendet;

function DeinFensterWirdBeendet()
{
//hier halt ein PostBack durchführen
__doPostBack(eventTarget, eventArgument)
}

Oder du greifst vom Popup auf dein Parent zu.
onunload="opener.DeinFensterWirdBeendet()

.