2010-02-16 23 views
0

Je cherche la meilleure solution pour mon problème. J'utilise actuellement un gridview asp.net avec un lien dans la première colonne et l'identifiant de l'objet auquel il se rapporte aussi.Je veux construire Href en utilisant l'événement onclick. Ajouter des paramètres de champs cachés sur la page à Href

Détails href = .../page.aspx? ID = 25

J'ai 3 champs cachés que je voudrais apporter avec moi à la page suivante.

Je veux que l'URL ressemble à ceci. Détails href = .../page.aspx? ID = 25 & HDN1 = 3 & HDN2 = 5 & HDN3 = 76

Je suis en mesure de définir les valeurs du texte caché. J'ai besoin de récupérer les valeurs et de les ajouter à l'URL dans le lien Détails. (Onclick?). Quelle est la meilleure façon de faire cela?

+0

-ce que ces champs cachés partie de la collection que vous Databinding GridView à? – ChadT

+0

Non, ils sont définis du côté client. Texte de recherche rapide, direction de tablesorter etc .... –

Répondre

1

Si ces champs masqués font partie de la collection de sources de la liaison de données, vous pouvez transmettre plusieurs paramètres à une colonne HyperLinkField GridView. par exemple:

<asp:HyperLinkField DataNavigateUrlFields="id, field1, field2" DataNavigateUrlFormatString="/page.aspx?id={0}&hdn1={1}&hdn3={2}" /> 

Edit:

OK si elle est côté client, vous devrez le faire via javascript.

Je voudrais ajouter un gestionnaire onclick à chacun de vos liens:

<a href="details.aspx?id=123" onclick="detailsHandler(this.href); return false;" /> 

alors une fonction javascript pour gérer la redirection:

function detailsHandler(href) { 
    var hiddenField = document.getElementById('eleID').value; 
    //get any other hidden fields and append them. 
    href = href + "&amp;hnd1=" + hiddenfield; 
    //then redirect to the revised url 
    window.location = href; 
} 
+0

Comment ajouter ceci à chaque lien sur la page? Gridview se plaint qu'il ne dispose pas d'une propriété publique nommée onclick –

+0

$ ('ItemLink.') Cliquez sur (function() { \t detailsHandler (de this.href); return false;} ). –

+0

Si vous utilisez la colonne GridView HyperLinkField, elle n'a aucune propriété d'événement. Vous pouvez soit le faire par programmation (par exemple, accrocher dans l'événement OnRowDataBound de la grille, et modifier chaque ligne comme ils sont créés) ou ce que je ferais est d'utiliser un TemplateField à la place, puis juste utiliser une balise d'ancrage normale. (Ou utilisez la méthode jQuery mentionnée ci-dessus). – ChadT