Attributs "onclick" et ASP.NET 2

[Résolu]
Signaler
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Bonjour,


Nouveau venu dans l'ASP.NET 2, je m'émerveille devant le maniement simple des GridViews sous VS 2005, ses connexoins quasi automatiques aux données,  mais…



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Je désire qu'avant de supprimer un enregistrment, un message me dise " Voulez-vous vraiment etc… "


J'ai écrit un peu comme avant, dans VS2003 :



 





Protected

Sub MonGridView_DataBound(ByVal sender AsObject, ByVal e As System.EventArgs) Handles MonGridView.DataBound






           
Dim ro As GridViewRow






           
For
Each ro In MonGridView.Rows






    
           
If ro.RowType = DataControlRowType.DataRow Then






                   
Dim btnDel As Button = CType(ro.Cells(9).Controls(0), Button) 'la cellule 9 est celle du bouton






                    btnDel.Attributes.Add("onclick", "return confirm('Voulez-vous vraiment supprimer cet enregistrement ?');")






 







               
End
If







           
Next







       
End
Sub








Eh bien ça marche, mais le bouton  n'effectue plus son postback. En regardant la source de la page, on voit ce code :



"button" value"Delete" onclick="return confirm('Voulez-vous vraiment supprimer cet enregistrement?');javascript:__doPostBack('MonGridView','Delete$4')"language="javascript" />



 




Les 2 javascript semblent mal cohabiter, que faire …?


Je précise que c'est pareil avec "Handles MonGridView.RowDataBound"




 





Merci de vos tuyaux


Gilles



http://www.aspfr.com 

4 réponses

Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

Bon, résultat des courses, j'ai écrit une fonction dans le <HEAD> :

 function confirmeSuppr()
{ return confirm('Voulez_vous etc...') ;
}

ensuite, j'ai persisté dans le code :
btnDel.OnClientClick &= "confirmeSuppr();"
Et ça fonctionne  ! Va comprendre ...
Merci de tes conseils
@+Gilles
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Salut,

Ton Button possède une propriété OnClientClick qui te permet de spécifier du code javascript qui sera exécuté lors du click, avant le postback (comme toujours, si ta fonction renvoie false, pas de postback).
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.button.onclientclick.aspx

A++
 


<hr width="100%" size="2" />
Nurgle(Antoine)
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

Merveilleux !


Bon, mais ça ne fait toujours pas de postback, le bouton a toujours la même allure :



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 J' ai donc remplacé par :





 


btnDel.OnClientClick &= "return confirm('Voulez-vous vraiment supprimer cet enregistrement?');"
ce qui donne:





return confirm('Voulez-vous vraiment supprimer cet enregistrement ?');javascript:__doPostBack('MonGridView','Delete$5')"</gras> language="javascript" />

Pourquoi ça ne marche pas?!  ?
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Logique,
Il y a un return dans tous les cas, avant le __doPostBack, donc celui-ci n'est jamais appelé ! (c'est mon "si ta fonction renvoie false, pas de postback" qui était pas clair du tout...)
Je dirais un truc du genre :
btnDel.OnClientClick = "if (!confirm('...')) { return; }";

Comme ça, si l'utilisateur fait OK, pas de return et le reste du javascript est exécuté.

A++

<hr width="100%" size="2" />Nurgle(Antoine)