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
Jetzt frag ich mich nur, was der gepostete Code mit Fenstern, klickbaren Links und ähnlichem zu tun hat....
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.
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);
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)
Oder, wenn Du kein JS verwenden willst: <a href="deineUrl" target="_blank">
Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.
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.
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.
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()
.