salut
quel est l'evenement qui est déclenché lors d'un clic sur un hyperlink situé dans un gridview?
Merci
Version imprimable
salut
quel est l'evenement qui est déclenché lors d'un clic sur un hyperlink situé dans un gridview?
Merci
La réponse qui suit suppose que le lien dont tu parles permette la modification ou la suppression d'une ligne d'enregistrements de ton GridView.
1)
D'abord il ne s'agit pas d'HyperLink ASP.NET ; le contrôle serveur n'a pas de nom.
2)
Le premier événement déclenché côté serveur s'appelle 'OnRowCommand'.
Suivant que ton lien est de type modification ou suppression, les événements déclenchés ensuite côté serveur correspondent à ce type ; ils s'appellent resp. 'OnRowUpdating' puis 'OnRowUpdated', 'OnRowDeleting' puis 'OnRowDeleted'.
A noter qu'il est possible d'annuler l'action du GridView en cours à partir de chacun de ces événements ; les suivants ne seront pas produits.
c'est pas le cas pour moi..
le clic sur l'hyperlink situé dans le gridview ouvre une fenetre popup
je veux récupérer l'id de la ligne (ou se trouve l'hyperlink selectionné) c'est pour cette raison j'ai besoin d'un evenement qui sera déclenché lors du clic sur l'hyperlink
merci
Salut,
C'est un lien HTML ou un controle serveur?
Si ton lien ne provoque pas la soumission du formulaire il ne se passera rien de particulier. Il faudra récupérer l'info que tu souhaites dans l'URL.
A+
un hyperlink ne declanche pas d'évenement coté serveur, il a une proprieté NavigateUrl qui te redirige vers l'url choisie (c'est en fait un <a>)
prefère plutot un linkbutton qui lui fera un postback au serveur
bonsoir, l'important pour moi c'est pas l'evenement declenché par le clic sur l'hyperlink,mais comment je recupere l'id de cette ligne, j'ai des traitements a faire dans la popup (ouverte en par le clic sur l'hyperlink)
je sais pas quelle propriete me permette de mettre cet id dans une variable puis la passer en tant que var de session
bonjour,j'ai tenté cette solution..je pense qu'elle n'est pas male mais il y a encore un truc qui ne fonctionne pas...au lien de passer un parametre dans un evenement (qui n'existe pas pour un hyperlink) je le passe en url..mais apparamment je me trompe dans la façon d'ecrire
voila le code behind:
le code de mon hyperlinkCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["ligne"] != null) { id = HttpUtility.HtmlEncode(Request.QueryString["ligne"]); //string ff = Request.QueryString["ligne"].ToString(); } else { id = "(No Selection)"; } }
Code:
1
2
3
4
5
6
7 <asp:templatefield headertext="Validation"> <itemtemplate> <asp:hyperlink id="HyperLink1" runat="server" navigateurl='<%# GetNavigateUrl(Eval("valideI").ToString(),Eval("idI").ToString()) %>' text='<%# Eval("valideI") %>' Enabled='<%# DataBinder.Eval(Container.DataItem, "valideI").ToString() == "pas encore" %>' /> </itemtemplate> </asp:templatefield>
je pense que l'errreur est dans la partie colorée en orangéCode:
1
2
3
4
5 protected string GetNavigateUrl(string code,string ligne) { return String.Format("javascript:var popup = window.open('Validation.aspx?code={0}ligne= + Eval(ligne).ToString()', 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0');", code); }
MERCI
Salut,
Commececi peut-être:
Le "+ Eval(ligne).ToString()" est un morceau de javascript qui devra être interprété par le navigateur. Donc il faut le sortir des apostrophes.Code:
1
2 return String.Format("javascript:var popup = window.open('Validation.aspx?code={0}ligne=' + Eval(ligne).ToString(), 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0');", code);
A+
beh apres la modification ça ne fonctionne plus!
alors la mienne est plus correcte,quand j'execute mon code ligne pas ligne je vois l'id que je veux récuperer est detecté cad lors de chargment du gridview la variable ligne contenant l'id change d'une ligne à une autre..mais lors du test de la récupération partoujours sa valeur a nul je sais pas pourquoiCode:(Request.QueryString["ligne"] != null)
Il faut bien penser que "GetNavigateUrl" va te renvoyer un chaine qui sera placée dans la page web et interprétée par le client. Est-ce que le code javascript est valide?
Je suis pas spécialiste javascript. Est-ce que "Eval(ligne).ToString()" renvoit bien l'identifiant que tu cherches? Pour tester tu peux essayer de faire un alert('') plutôt qu'un window.open()
bonne idee pour tester! effectivement vous avez raison la variable code est correcte mais la variable ligne n'est pas modifiéé..voici le message d'alert
Validation.aspx?code=pasencoreligne=+Eval(ligne).ToString()
y'a t il une solution??? :(
ce que me parait bizzarre lorsque je fais un breakpoint ds la methode GetNavigateUrl et je consulte la valeur de la variable ligne (lors du chargement du gridview) ça fonctionne tres bien autrement Eval(ligne).ToString() est valable,non???
Il faut que l'alerte ne renvoi pas "Eval(ligne).ToString()". Il faut donc sortir ce morceau de code de la chaine.Avec ce code jaavscript, tu constates que la coloration syntaxique "reconnait" que "Eval(ligne).ToString()" ne fait pas partie de la chaine. Du coup, il sera interprété comme du code. Donc il te faut un fonction javascript qui completera ta chaine pour ajouter l'identifiant, genreCode:var popup = window.open('Validation.aspx?code={0}ligne=' + Eval(ligne).ToString(), 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0');
A+Code:
1
2
3
4
5 mafunction(identifiant) { var popup = window.open('Validation.aspx?code={0}ligne=' + identifiant, 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0'); }
merci pour la réponse mais je saisi pas vraiment ce que vous venez de m'expliquer
d'abord dois je utiliser les deux methodes GetNavigateUrl et ma fonction??
de plus GetNavigateUrl doit retourner un string qui sera appelé dansautre chose, je comprends pas bine "Donc il te faut un fonction javascript qui completera ta chaine pour ajouter l'identifiant" comment je dois compléter ma chaine? en code javascript??Code:<asp:hyperlink id="HyperLink1" runat="server" navigateurl='<%# GetNavigateUrl(Eval("valideI").ToString(),Eval("idI").ToString()) %>'
peu etre l'erreur est lors de l'appel de GetNavigateUrl :
Code:navigateurl='<%# GetNavigateUrl(Eval("valideI").ToString(),Eval("idI").ToString()) %>'
Et ceci:Tu peux regarder cette solution: http://www.developpez.net/forums/d72...velle-fenetre/Code:
1
2
3
4
5 protected string GetNavigateUrl(string code,string ligne) { return String.Format("javascript:var popup = window.open('Validation.aspx?code={0}ligne={1}', 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0');", code, ligne); }
merci Immobilis pour la solution, presque c'est résolu
quando je fais une alerte, j'ai l'affichage suivant Validation.aspx?code=pas encoreligne=4
c'est exactement ce que je veux (j'ai bien cliqué sur l'hyperlink de la ligne numero 4) mnt le probleme est lors de la récupération
dans le load de la nouvelle webform (ma popup) tjs la valeur de Request.QueryString["ligne"] est à nul
j'ai une autre question lors de l'appel de GetNavigateUrl j'ai utilisé deux manieres, les deux fonctionnent mais je sais pas laquelle est la plus exacteCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 public string id; protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["ligne"] != null) { id = HttpUtility.HtmlEncode(Request.QueryString["ligne"]); //string ff = Request.QueryString["ligne"].ToString(); } else { id = "(No Selection)"; } }
1)2)Code:navigateurl='<%# GetNavigateUrl(Eval("valideS").ToString(),Eval("idS").ToString()) %>'
merci bien :)Code:navigateurl='<%# GetNavigateUrl(DataBinder.Eval(Container.DataItem,"valideS").ToString(),DataBinder.Eval(Container.DataItem,"idS").ToString()) %>'
Il manque le "&" commercial. Correction:Code:
1
2
3
4
5 protected string GetNavigateUrl(string code,string ligne) { return String.Format("javascript:var popup = window.open('Validation.aspx?code={0}&ligne={1}', 'Popup', 'toolbar=no,width=200, height=200, top=0, left=0');", code, ligne); }
yesssssssssssssssssssssssssssssssssssssss :yaisse2:
enfin ça marche merciii Immobilis :king:
;)