Wie öffne ich eine weitere Registerkarte beim Klicken ohne Aktualisierung der aktuellen Seite in ASP.NET Web Forms?
Ich möchte in der Lage sein, auf eine Schaltfläche zu klicken, die beim Klicken eine weitere Registerkarte öffnet. In meinem Fall geschieht dies mit zweiASP.Net
Kontrollen, eineasp literal
mit<form>
Tags, um es als Submit-Button zu formatieren, weil ich es brauche, um ein @ zu habPOST
Funktionalität. Der Code innerhalb desasp literal
sieht wie folgt aus:
<input type='submit' id='openWindowButton' value = 'Open window'>
mit einem gegebenenURL
und_blank
, um die neue Registerkarte zu öffnen. Ich benutze eine andere Asp-Steuerung, einLinkButton
diesmal, um ein Ereignis bei Klick auszulösen und auch den Klick auf den Submit @ auszulösasp literal
mitjavascript
code. Es sieht aus wie das
<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>
AufDoStuff
-Ereignis Ich muss Code ausführen, der das @ -Ereignis auffüllasp literal
mit dem oben genannten Code, und nachdem es beendet ist, wird ein Klick auf den Submit-Button mit @ ausgelöopenWindowButton
ID wie folgt:
function InvokeReportFormClick() {
document.getElementById("openWindowButton").click();
return false;
}
Der Code für den Klick wird mit @ hinzugefüScriptManager.RegisterStartupScript
Methode
Alles funktioniert auf diese Weise, der LinkButton füllt das Literal und klickt darauf, und das Literal öffnet eine Registerkarte. Das einzige Problem ist, dass die Seite neu geladen wird, und ich möchte dieses Verhalten vermeiden. Ich habe versucht, die Rückgabe am Ende des Skripts auf "false" zu setzen, aber wenn ich nur "false" von der JavaScript-Methode zurückgebe, wie oben zu sehen, wird die Seite immer noch neu geladen, und ich denke, es liegt an dem generierten Klick auf dasasp literal
.
Ich könnte hinzufügen, ich füge return false für das Ereignis onclick auf dem @ hinzasp literal
wie folgt eingeben:
<input type='submit' id='openWindowButton' value = 'Open window' onclick="return false;">
aber es stoppt das Öffnen der Registerkarte, die ich brauche.
Ich habe auch versucht, das @ zu setzasp:Linkbutton
in einem (nUpdatePanel
control wie in diesem Beispiel:
<asp:ScriptManager runat="server" ID="reportScriptManager">
</asp:ScriptManager>
<asp:UpdatePanel ID="updatePanelID" runat="server">
<ContentTemplate>
<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
Aber es aktualisiert immer noch die Seite, wie ich immer noch aus dem @ erraasp literal
klicken. Und wenn ich das asp-Literal neben @ hinzufüLinkButton
, die Seite wird nicht aktualisiert, aber ich erhalte die Fehlermeldung, dass
Uncaught TypeError: Eigenschaft 'click' von null kann nicht gelesen werden.
Welche ich denke, es passiert, weil die Seite nicht neu geladen wird, und dieasp literal
Text wird nicht in die Seite geladen, wenn eine Klickaktion ausgeführt wird.
Wie kann ich das Neuladen der Seite stoppen und trotzdem die gleiche Funktionalität dieser Schaltflächen beibehalten? Freundliche Grüße
BEARBEITE
Ich habe bemerkt, dass die Schaltfläche zum Senden von @ gemacasp literal
lädt das Formular nicht neu, da ein einfacher manueller Klick darauf nur die neue Registerkarte öffnet. Das Hauptproblem in diesem Fall ist also nur, die asp @ zu machLinkButton
das Neuladen der Seite nicht auslösen.
In der .cs-Datei registriere ich mit dieser Methode mein Skript, das ausgeführt werden soll, nachdem ich auf den LinkButton geklickt habe, wie auf @ vorgeschlage asp.net forum:
RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)