2009-03-10 9 views
1

Ich arbeite an einer Seite, auf der andere Seiten modal geöffnet werden. Ich muss aufrufen Funktion existiert in der Opener-Seite, um bestimmte Steuerelemente darin zu aktualisieren.Wie existiert eine Aufrufmethode auf einer Seite von einer anderen Seite?

Ich benutze window.open, um ein anderes Fenster zu öffnen, aber in diesem Fall ist Page.PreviousPage für geöffnete Seite null.

Ich verwende

<%@ PreviousPageType VirtualPath="~/PreviousPage.aspx" %> 

zur vorigen Seite zurück zu verweisen.

Irgendwelche Vorschläge?

FYI: alle aspx Seiten sind AJAX-Enabled.

Antwort

2

Sie können keine Methode im Code hinter einer Page-Klasse aufrufen, um Steuerelemente auf einer angezeigten Seite zu aktualisieren. Die Instanz der Klasse Page existiert nur, während die Seite gerendert wird. Sobald die Seite im Browser angezeigt wird, ist das Objekt Page nicht mehr vorhanden. Die PreviousPage-Eigenschaft wird verwendet, wenn Sie einen Post von einer Seite zu einer anderen erstellen. Das Objekt Page, das zum Rendern der Seite verwendet wurde, enthält jedoch ein neu erstelltes Page-Objekt, das nicht zum Rendern verwendet wird überhaupt etwas. Sie können es nur verwenden, um Informationen aus den Feldern basierend auf den Informationen zu lesen, die von ihm gepostet wurden.

Wenn Sie die Eröffnungsseite aktualisieren möchten, müssen Sie dies entweder auf der Clientseite mit Javascript() tun, oder die Seite neu laden, damit der serverseitige Code sie erneut füllen kann. Eine Kombination beider wäre, AJAX zu verwenden, um die Seite zu aktualisieren.

Edit:
Sie können zum Beispiel Javascript verwenden den Opener für den Zugriff auf und den Inhalt eines Elements ändern:

window.opener.document.getElementById('Info').innerHTML = 'updated'; 

Sie können auch eine Javascript-Funktion in der Opener Seite aufrufen:

window.opener.doSomething('data'); 

Das gibt Ihnen mehr Möglichkeiten, zum Beispiel einen AJAX-Aufruf zum Laden von Daten vom Server.

+0

Guffa, könnte ich sagen, dass PreviousPage-Eigenschaft nur verwendet wird, um Daten über die Opener-Seite zu sammeln, aber nicht um sie zu aktualisieren? Sie sagten, verwenden Sie Javascript, dies zu tun, könnten Sie das mehr erklären? – Ahmed

+0

Ja, PreviousPage erstellt ein neues Seitenobjekt mit Daten wie "ViewState" und "Form", hat jedoch keine Beziehung zu der im Browser angezeigten Seite. Ich habe dem Beitrag einige Javascript-Beispiele hinzugefügt. – Guffa

1

Sie können die übergeordnete Seite mit Javascript an den Server senden. Sie können die Funktion window.opener im JavaScript verwenden, um auf die übergeordnete Seite zuzugreifen.

+0

Vereinbart, window.opener gibt Ihnen einen Verweis auf das Fenster, das die modale/pop-up-Seite geöffnet hat. Sie können dann die JS-Funktionen auf der übergeordneten Seite aus dem neuen Fenster aufrufen oder die Steuerelemente direkt aktualisieren. –

Verwandte Themen