2011-11-15 2 views
1

Mon cas est que j'ai une page asp.net a une formeAuto Control Server Postback avec la forme a _blank attribut

<form id="form1" runat="server" target="_blank"> 

et un bouton de redirection vers une autre page et cette page ouvrira dans une nouvelle fenêtre en raison de l'attribut cible du formulaire.

<asp:Button ID="button1" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" /> 

et j'ai une liste déroulante a auto postback = true pour poster le passé pour remplir une autre liste déroulante par des données sélectionnées. La question est: pourquoi quand je sélectionne un élément dans le menu déroulant autobackback, une page vierge est ouverte?

je besoin d'un moyen d'afficher la page par le dropdownlist sans openning une page blanche ..

Merci,

Répondre

0

Faute d'une meilleure idée, vous pouvez simplement supprimer l'attribut target="_blank" de votre balisage et lorsque vous cliquez sur votre bouton, modifiez la balise form avec JavaScript et définissez l'attribut.

Vous pouvez définir la propriété OnClientClick et exécuter JavaScript lorsqu'il est cliqué. Par exemple:

<asp:Button ID="button1" OnClientClick="document.getElementById('form1').setAttribute('target', '_blank')" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" /> 
+1

la page ne sera pas redirigé dans un nouvel onglet jusqu'à ce que 'button1' ne soit pas cliqué. mais, que se passe-t-il une fois que l'attribut 'target = _blank' est défini. Chaque fois que nous cliquons sur un lien, il redirige la page sur un nouvel onglet au lieu de la même fenêtre. Y a-t-il un moyen de définir temporairement l'attribut 'target' jusqu'à ce que la page ne soit pas redirigée, alors elle devrait être définie sur' _self ou supprimée de la balise de formulaire? – Shell

-1
<form id="form1" runat="server"> 
0

Vous pouvez toujours ajuster simplement votre code ButtonPress pour ouvrir une nouvelle fenêtre comme celle-ci:

<asp:Button ID="myBtn" runat="server" Text="Click me" 
onclick="myBtn_Click" OnClientClick="window.open('kindofpage.aspx', 'kindofpage');" /> 

puis retirez le:

target="_blank" 

De la étiquette de forme.

+0

supprimer la cible de l'étiquette de formulaire dans la page enfant? –

+0

Utilisez le code que j'ai posté en conjonction avec la création de votre balise de formulaire:

. La commande javascipt window.open, prendra soin d'ouvrir un nouvel onglet sur le bouton presse seulement et non lorsque vous postback via la liste déroulante. – KreepN

0

J'ai lutté avec une situation similaire mais je l'ai résolu de la manière suivante. Comme mentionné dans this answer, vous pouvez utiliser la propriété OnClientClick pour définir la cible sur "_blank". Par exemple.

<asp:Button ID="button1" OnClick="codebehind_method" OnClientClick="document.forms[0].target = '_blank';" runat="server" Text="targets new window" /> 

Puis, dans la page ASPX que ma fonction « codebehind_method » réexpédie, je réinitialiser la cible de la forme ouvre comme ceci:

<script type="text/javascript"> 
function resetTarget() { 
opener.document.forms[0].target = ''; 
} 
</script> 
<body onload="resetTarget()"> 

Maintenant, si vous revenez à votre formulaire d'ouverture et utiliser un contrôle qui n'a pas le jeu de propriétés "OnClientClick", l'AutoPostBack doit se produire dans le même onglet. Si vous voulez trouver votre formulaire par ID, remplacer « document.forms [0] » avec:

document.getElementByID('yourFormName')