7
votes

Quelle est la fermeture de la fenêtre HTML lorsque vous cliquez sur le bouton ASP.NET?

J'ai le bouton ASP.NET "OK" dans la fenêtre contextuelle HTML. Après ma logique faisait la fermeture de la fenêtre contextuelle?

<asp:Button Id="btnOK" runat="server"  AccessKey="<%$Resources:
wss,multipages_okbutton_accesskey%>" Width="70px" Text="<%$Resources:wss,
multipages_okbutton_text%>" OnClick="btnOK_Click" />


0 commentaires

5 Réponses :


15
votes
<asp:Button ID="btnOK" runat="server" OnClientClick="window.close(); return false;" Text="Close" />

0 commentaires

0
votes

qui nécessite un peu de javascript. Changez votre balisage de bouton à ceci:

<asp:Button Id="btnOK" runat="server"  AccessKey="<%$Resources:
wss,multipages_okbutton_accesskey%>" Width="70px" Text="<%$Resources:wss,
multipages_okbutton_text%>" OnClick="btnOK_Click" OnClientClick="javascript:window.close(); return false;" />


0 commentaires

2
votes

S'il y a une chance que votre code côté serveur puisse échouer, et vous devez conserver la pop-up ouvert pour corriger les erreurs, le tour OnClientClick ne vous aidera pas. Je fais cela avec un espace réservé et un petit script:

protected void btnOK_Click(Object sender, EventArgs e) {
  bool success = processPage();
  close_script.Visible = success;
}


6 commentaires

Si le bouton représente elle-même, n'est-ce pas relativement sûr de supposer que cela rendrait l'attribut onclientClick ? Question honnête, mais ma supposition est "Vous pouvez supposer en toute sécurité que si le bouton montre même que le javascript approprié serait attaché".


Déclaration vraie, mais je ne vois pas comment cela s'applique à ma suggestion.


Ah, il n'était pas clair de la version originale de votre réponse que le local serait sur la page mère. Pour une raison quelconque, je pensais que vous suggérez un contrôle supplémentaire sur la pop up manipulant sa propre fermeture, qui était juste idiot :)


En fait, c'est exactement ce que je fais. Le code côté PopUp Server sait s'il a réussi ou échoué, et sait donc s'il devrait être fermé ou rester ouvert. L'utilisation de la propriété OnClientClick (comme d'autres suggérées) est presque la même chose, sauf qu'il ferme la page avant le code côté serveur s'exécute. Ma suggestion ferme la popup après le code côté serveur fonctionne.


Pourquoi ne pas simplement utiliser registerstartupscript pour écrire le JS? Mêmes lignes de code côté serveur et de balisage beaucoup plus propre.


Préférence personnelle surtout. Toutefois, si l'acruse est plus compliquée que la fenêtre. Je préfère écrire mon script dans