2009-03-10 5 views
1

Je travaille sur une page, dans laquelle d'autres pages sont ouvertes de manière modale. J'ai besoin d'appeler la fonction existe dans la page d'ouverture pour mettre à jour certaines commandes dans celui-ci. J'utilise window.open pour ouvrir une autre fenêtre mais dans ce cas, la page Page.PreviousPage pour la page ouverte est null.Comment une méthode d'appel existe-t-elle dans une page d'une autre page?

J'utilise

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

de se référer à la page précédente.

Des suggestions?

FYI: toutes les pages ASPX sont activées par AJAX.

Répondre

2

Vous ne pouvez pas appeler une méthode dans le code derrière une classe Page pour mettre à jour les contrôles dans une page affichée. L'instance de la classe Page existe uniquement lorsque la page est rendue, une fois que la page est affichée dans le navigateur, l'objet Page n'existe plus. La propriété PreviousPage est utilisée lorsque vous faites un post d'une page à une autre, mais elle ne contient pas l'objet Page utilisé pour rendre la page, il contient un objet Page recréé qui ne sera pas utilisé pour le rendu. rien du tout. Vous pouvez uniquement l'utiliser pour lire les informations des champs en fonction des informations qui y ont été publiées. Si vous souhaitez mettre à jour la page d'ouverture, vous devez soit le faire du côté client en utilisant Javascript(), soit recharger la page afin que le code côté serveur puisse la repeupler. Une combinaison de ces deux serait d'utiliser AJAX pour mettre à jour la page.

Edit:
Vous pouvez par exemple utiliser JavaScript pour accéder à l'ouvre-porte et modifier le contenu d'un élément:

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

Vous pouvez également appeler une fonction Javascript dans la page d'ouverture:

window.opener.doSomething('data'); 

Cela vous donne plus de possibilités, comme faire un appel AJAX pour charger des données du serveur.

+0

Guffa, pourrais-je dire que la propriété PreviousPage est utilisée juste pour collecter la date sur la page d'ouverture, mais pas pour la mettre à jour? Vous avez dit, utilisez Javascript pour le faire, pourriez-vous expliquer cela plus? – Ahmed

+0

Oui, PreviousPage crée un nouvel objet Page contenant des données telles que ViewState et des données de formulaire, mais il n'a aucun lien avec la page affichée dans le navigateur. J'ai ajouté quelques exemples Javascript à la publication. – Guffa

1

Vous pouvez renvoyer la page parent au serveur à l'aide de javascript. Vous pouvez utiliser la fonction window.opener dans le javascript pour accéder à la page parente.

+0

D'accord, window.opener vous donnera une référence à la fenêtre qui a ouvert la page modale/pop-up. Vous pouvez ensuite appeler les fonctions JS sur la page parent à partir de la nouvelle fenêtre ou mettre directement à jour les contrôles. –

Questions connexes