cs_dawinch
Messages postés27Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 3 janvier 2008
-
4 juil. 2007 à 13:57
JuLsupinfo
Messages postés11Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention21 novembre 2007
-
18 juil. 2007 à 09:29
Bonjour,
j'ai un Gridview avec tri (AllowSorting="True") bindé à un SqlDataSource. Le tri s'effectue correctement sur les colonnes.
Pour faire une recherche sur les données qui y sont affichées sur un clik bouton, je crée un nouveau SqlDataDource en code behind faisant la requête de recherche.
Le Gridview affiche bien les données voulues.
Le problème vient lorque j'essaye de faire un tri sur une colonne du GridView "fraichement bindé", j'ai une erreur :
"Le GridView "MyGridView" a déclenché un évènement Sorting qui n'était pas géré"
???
J'ai bien essayé de forcer en code-behind après le databind() :
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 5 juil. 2007 à 09:05
Personnellement pour un affichage d'une recherche avancée dans un Gridview, j'ai créé ma requête "reqRecherche" que j'envois ensuite dans la data source.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 4 juil. 2007 à 18:56
pourquoi ne pas utiliser le meme sqldatasource en rajouter un controlparameter associé à la textbox de recherche ?
le code que donne gldfdp permet seulement de s'abonner à l'event sorting du gridview mais tu n'en as pas besoin si tu le bind en utilisant le sqldatasource. C'est utile si tu le bind "à l'ancienne" (je bind toujours à l'ancienne, je trouve les XXXDatasource stupide).
cs_dawinch
Messages postés27Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 3 janvier 2008 4 juil. 2007 à 15:32
merci de ta réponse ..mais ça marche pas.
Toujours le même message d'erreur.
J'ai essayé avant et après le databind() mais je ne suis pas sûr que ca soit au bon endroit (j'ai toujours pas vraiment bien compris la chronologie des évènements d'ASP.NET quand il reconstruit sa page)
De plus, il me faut redéfinir la foncton de tri; n'y a t_il pas moyen d'utiliser directement la méthode de tri du GridView ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_dawinch
Messages postés27Date d'inscriptionlundi 2 mai 2005StatutMembreDernière intervention 3 janvier 2008 5 juil. 2007 à 09:21
merci à vous deux pour vos réponses.
Je pense que je vais opter pour la solution de zuff.
Cyril : qu'appelles tu bindé à l'ancienne ? (nouveau dans ASP, j'ai commencé directement en ASP.NET 2.0 en essayant de suivre la 'logique' de dev Microsoft, celle des vidéos sur leur site, c'est à dire en utilisant un maximum leurs composants. Mais c'est vrai qu'il me semble que par moment, dès qu'on sort de leur utilisation standard, ça complique plus qu'autre chose)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 5 juil. 2007 à 11:08
zuff : tu stock la requete dans un hiddenfield ??? :| ben t'es gentil avec ton utilisateur toi ! en faisant ca tu lui laisses le full control de la base ... il peut afficher les requetes qu'il veut. J'espere que tu stockes pas des cartes de crédits ou des infos confidentiels ... en plus j'ai l'impression que ta solution fait 2 requete SQL :s
pour ce qui est du binding à l'ancienne : c'est lorsque l'on fait
monGridview.datasource = macoucheserver.GetDatas(filterValue);
monGridview.DataBind();
et qu'on utilise pas les controles DataSource ...
mais dans ton cas, si tu utilises un sqldatasource je te conseil de rajouté une propriété controlparameter qui est lié à ta textbox. tu n'auras absolument rien à écrire dans le code-behind. Ce qui peut etre utile pour des petits sites ou lorsque tu n'as pas une application bien architecturé en plusieurs couches.
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 5 juil. 2007 à 17:55
jesusonline: j'utilise hiddenfield en visible= false, l'utilisateur ne vois rien et tu as une variable de page qui existait en 1.1 et disparue sur la 2. (le hiddenfield est moins problèmatique qu'une variable de session )
JuLsupinfo
Messages postés11Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention21 novembre 2007 17 juil. 2007 à 09:21
Tout d'abord merci pour les réponses, elle m'ont bien aidé.
zuff : au sujet de ta reqRecherche, comment la définit-tu ? en tant que string ? Comment passes-tu en paramètre une valeur d'un textbox par exemple ? :$
En fait je ne vois pas où passer en paramètre l'argument à rechercher ^_^'
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 18 juil. 2007 à 09:24
reqRecherche est bien sur une string.
Protected
Sub btnRechercheAvancee_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles btnRechercheAvancee.Click
' recherche avancée
Dim
reqRecherche AsString = "SELECT champ1, champ2 FROM table1"
IftxtRecherche.Text.Trim.Length> 2
Then
reqRecherche += " WHERE champ1 LIKE '%"& txtRecherche.Text.Trim.Replace("'"
,
"`")
&"%'"
EndIf
reqRecherche += reqRecherche &
" ORDER BY champ1"
hdnReqRecherche.value = reqRecherche
Cette technique est pour faire des recherches sur plusieurs critères (la création de la requête est un peu plus complexe que dans l'exemple), si tu doit faire des recherches que sur un critère, il suffit d'utiliser les propiétés du SqlDataSource.
JuLsupinfo
Messages postés11Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention21 novembre 2007 18 juil. 2007 à 09:29
Merciiii, mais j'ai trouvé ma solution en C#, en ce qui concerne le multi-critères, j'ai trouvé mon bonheur en utilisant un StringBuilder et sa méthode Append().