Faire passer un PostBack à une autre page d'un PopUp

J'ai une page principale et une page de détails.

La page de détails est un popup javascript invoqué à partir de la page principale.

Lorsque le bouton 'Enregistrer' est cliqué sur la page de détails, je souhaite que la page principale "actualise".

Existe-t-il une méthode pour invoquer un postback vers la page principale tout en maintenant la sauvegarde postback de la page de détails?

Modifier – L'utilisation de window.opener.location.reload (true) fonctionne, mais elle invite l'utilisateur à renvoyer les informations. Ce 'document.location.href = document.location.href;' Ne fonctionne pas non plus parce qu'il efface le formulaire sur la page principale.

Je recommanderais d'utiliser un popup modal pour la page de détails au lieu d'ouvrir une autre fenêtre via JavaScript. Cela vous permettra de sauvegarder tout sur la même page et vous donnera plus de contrôle

Compte tenu de votre situation actuelle, je pense que vous allez dans la bonne direction. Essayez ceci et voyez s'il correspond à vos besoins.

window.opener.location.href='http://redirect.address'; 

Voici une question similaire

Pour une solution sans mise à jour sans panneaux, vous pouvez demander à la popup de retourner une valeur dans un champ de texte et de créer ce champ de texte après le retour sur le changement.

Oui, vous devriez pouvoir utiliser target = "_ parent" sur le lien à partir de votre page de détails. Vous devrez lier un événement sur celui-ci pour fermer la page des détails, mais devrait vous aider à démarrer.

Par exemple: <a href="mainPage.html" target="_parent">Save Details</a>

Vous pouvez accéder à la fenêtre parent à partir de la fenêtre contextuelle à l'aide de javascript avec window.opener . De là, vous pouvez utiliser, par exemple, l'emplacement.href pour actualiser la page parentale. 🙂

Je sais que vous avez déclaré qu'il fallait faire un postback, mais je proposerai cette suggestion …

Je placerais un ajax updatepanel sur la page principale, puis je permettra aux fenêtres contextuelles de mettre à jour. Je ne sais pas combien de sympathie à microsoft ajax et au kit de contrôle ajax que vous avez, mais ce serait ma première approche.

Évidemment, je ne connais pas la portée complète, mais je ne vois pas le problème de la page demandant à l'utilisateur de renvoyer les données et la mise à jour de la page sans une sorte de solution basée sur JavaScript.

Si vous devez actualiser la page et conserver les données du formulaire sans retourner le POST, vous pouvez (en fonction de la taille et de la complexité des données de votre formulaire) créer une représentation de l'état de formulaire en JavaScript, le stocker dans un cookie ou The querystring, actualisez la page en configurant document.location.href, puis rechargez les données lorsque la fenêtre se charge.

Voici une version approximative de cette idée. Ce code, avec un téléchargement en ligne, entrerait dans l'ouvreur (les méthodes de traitement des cookies auraient également besoin d'être ajoutées). Window.opener.refreshWithState () serait appelé à partir de la fenêtre contextuelle.

(Cette version dépend des entrées ayant des identifiants uniques)

 (function() { window.refreshWithState = function() { setCookie("state", buildState()); document.location.href = document.location.href; }; function handleWindowLoad() { var state = readCookie("state"); if (state) { restoreState(state); eraseCookie("state"); } } function buildState() { var i, elem, elems, key, val, stateParts = []; elems = document.getElementsByTagName('INPUT'); for (i = 0; elem = elems[i]; i++) { switch (elem.type) { case "checkbox": case "radio": val = elem.checked ? 1 : ""; break; case "text": case "hidden": case "file": val = escape(elem.value); break; default: continue; } stateParts.push('"' + escape(elem.id) + '":"' + val + '"'); } elems = document.getElementsByTagName('SELECT'); for (i = 0; elem = elems[i]; i++) { stateParts.push('"' + escape(elem.id) + '":"' + elem.selectedIndex + '"'); } return '{' + stateParts.join(',') + '}'; } function restoreState(state) { var key, elem, val; var stateObj = eval('(' + state + ')'); for (key in stateObj) { elem = document.getElementById(unescape(key)); if (!elem) { continue; } val = stateObj[key]; if (elem.tagName == "SELECT") { elem.selectedIndex = val; } else if (elem.tagName == "INPUT") { switch (elem.type) { case "checkbox": case "radio": elem.checked = !!val; break; case "text": case "hidden": case "file": elem.value = unescape(val); } } } } })();