Créer PopUp avec <asp: HyperLink> qui passe des paramètres

Cette syntaxe HyperLink ne fonctionne pas pour transmettre des paramètres à une petite fenêtre PopUp:

 <asp:HyperLink ID="HyperLink2" runat="server" Text="Manage Related Items" NavigateUrl='<%# "editRelatedItems.aspx?" + "ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>' onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;) target="_blank" /> 

On dirait que la <asp:HyperLink> ne prend pas le "onclick" . Des idées sur la façon d'obtenir un démarrage automatique qui peut obtenir ces paramètres? J'utilise C #, alors peut-être qu'il existe un moyen de créer la chaîne NavigateURL dans le code derrière?

Merci pour toutes les idées que vous pourriez avoir.

 <asp:HyperLink ID="HyperLink2" runat="server" Text="Manage Related Items" NavigateUrl="#" onClick='<%# "window.open('editRelatedItems.aspx" + "?ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") + ",'name','height=550, width=790,toolbar=no, directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;%>' Target="_blank" /> 

Cela devrait fonctionner, mais je créerais vraiment une méthode javascript pour appeler qui ouvrirait la fenêtre.

 <script type="text/javascript"> function openRelatedItems(productSID, collectionTypeId, productTypeId) { window.open('editRelatedItems.aspx" + "?ProductSID=" + productSID + "&CollectionTypeID=" + collectionTypeID + "&ProductTypeID=" + productTypeID + ",'name','height=550, width=790,toolbar=no, directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); } </script> 

À partir du code côté serveur, vous pouvez le faire

 HyperLink2.Attributes.Add("OnClick", "yourstuffhere"); 

Cela vous permettra de spécifier les éléments OnClick.

Vous pouvez également définir le NavigateUrl comme quelque chose comme "javascript: window.open …" si vous vouliez, encore une fois, être fait à partir du code derrière.

aussi

Étant donné qu'un lien hypertexte est juste une version standard de l'étiquette d'ancrage du moulin, si vous faites tout ce traitement dans le code derrière, il serait peut-être plus facile de créer tout le lien vous-même pour économiser de la peine.

Avez-vous besoin du contrôle du lien hypertexte sur le serveur? Sinon, je recommanderais simplement d'utiliser une balise d'ancrage HTML standard ou si vous en avez besoin pour qu'elle s'affiche dynamiquement, pour la générer dans l'arrière-plan à l'aide d'une balise littérale et en écrire le marquage (y compris l'onclick). La question que vous devez vous poser est «Est-ce que vous vous sentez chanceux? Et "Ai-je besoin d'un contrôle de serveur?"

Si ce n'est pas familier, recherchez un peu l'événement ItemDataBound.

Code clé à placer dans l'événement ItemDataBound de votre DataList:

 Dim lit as Literal = CType(e.Item.FindControl("Literal1"), Literal) lit.Text = "<a onclick='YOURJAVASCRIPT' href='#'>YOUR TEXT</a>" 

Ce n'est pas le code entier que vous devriez mettre dans votre événement, comme je l'ai dit, recherchez ce que l'événement peut offrir et va de là.

Votre utilisation d'onclick dans votre code manque de sa citation de clôture " et a un support supplémentaire ) . Cela pourrait être votre problème.

 onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;" 

J'ai constaté que les popups javascript ne fonctionnent pas bien avec ASP:HyperLink ; Essayez de créer le lien via une balise d'ancrage normale:

 <a id="HyperLink2" runat="server" NavigateUrl='<%# "editRelatedItems.aspx?ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") %>' onclick="window.open('editRelatedItems.aspx?','name','height=550, width=790,toolbar=no,directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;" Target="_blank"> Manage Related Items </a> 

Le NavigateUrl remplace l'événement onclick d'une balise 'a'.

Vous souhaitez définir l'attribut cible et déposer l'onclick

http://www.w3schools.com/tags/tag_a.asp

Utilisez OnClientClick au lieu d' OnClick .

 <asp:HyperLink ID="HyperLink2" runat="server" Text="Manage Related Items" NavigateUrl="#" onClick='<%# "window.open('editRelatedItems.aspx" + "?ProductSID=" + Eval("ProductSID") + "&CollectionTypeID=" + Eval("CollectionTypeID")+ "&ProductTypeID=" + Eval("ProductTypeID") + ",'name','height=550, width=790,toolbar=no, directories=no,status=no, menubar=no,scrollbars=yes,resizable=no'); return false;%>' Target="_blank" /> 

Où vous avez fermé "après avoir démarré la valeur url. Ce code affiche une erreur, la balise du serveur n'est pas bien formée