[asp.net 2.0] GridView, ObjectDataSource et Search [Résolu]

Messages postés
50
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
13 septembre 2008
- - Dernière réponse : mdemo
Messages postés
90
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
10 mai 2010
- 26 avril 2006 à 18:38
Salut à tous :)

Je développe en Asp.net 2.0 et j'utilise le nouveau control GridView... C'est qu'il est quand même super bien ce controle, surtout quand on lui attribut une source comme l'ObjectDataSource... mais voilà ....
L'objectdatasource propose un max de fonctionnalité, mais je n'arrive pas à faire une requete SQL customisé pour faire une recherche.
Je m'explique. L'objectdatasource permet de lui assigner une "Select Method" ... mais dans ma page, j'ai un bloc html pour faire une recherche selon des critères proposés (la plupart du temps, dans une dropdown list). Mais voilà... la Select Method ne prend pas de paramètre donc impossible d'utiliser la méthode choisie pour faire un Select et un search ...
Alors je tente de passer par les FilterExpressions, mais c'est la galère je trouve, car faut produire tout un mécanisme de construction de la FilterExpression selon les critères, et surtout... ça n'empêche pas la requête SQL de prendre toute les infos et pas seulement celle dont j'ai besoin... Car on voit pas la différence avec peu de lignes, mais quand on arrive avec quelques dizaines de milliers de lignes, c'est couteux en temps et performance de faire un tri sur tout ...

Du coup, j'ai laissé tombé les FilterExpressions (enfin, j'ai mis de coté ^^) et je pensais binder à la main mon GridView.
Du style:
List<ma_class> collection = ma_class_collection.GetSearch(ici, les paramètres);
this.GridView1.DataSource = collection;
this.GridView1.DataSourceID = null;
this.GridView1.DataBind();

Mais le hic, c'est que du coup, les CommandField ne marche plus. Je ne peux plus éditer mes lignes...

Bref, comment faire pour permettre une recherche selon des critères indéterminés à l'avance ?
Faut-il utiliser les FilterExpressions ? Si oui, comment ?
Dois-je continuer avec le fait de switcher les sources pour mon GridView ?

Bref, merci d'avance à ceux qui pourront m'aider :D
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
50
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
13 septembre 2008
3
Merci
En fait, c'est bon j'ai trouvé lol
Je suis complétement passé à coter. C'est tou simple, vous allez voir ^^
Suffit juste de créer une select method qui prend des parametre du style List<ma_class> Select(int parma1, int param2);
Et avec Visual via les SmartTag ou autre assistant, quand vous selectionnez cette méthode pour la fonction Select, l'écran suivant vous permet de parametrer les parametre... Donc suffit de choisir la source pour les paramètres et le tour est joué ^^

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_bigflo93
Messages postés
90
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
10 mai 2010
0
Merci
Bonjour,
La select method crée en effet directement les bind sur les données. C'est très pratique, par contre fais attention car l'assistant prête à confusion si tu crées une requête update ou delete car en cliquant sur le Next, après le choix d'une requête update par exemple, tu retrouves les données à binder de la select method.
Pour lier des données dans le cas de requêtes update, delete... il te faudra simplement aller dans les propriétés de ton objectdatasource, et cliquer sur UpdateParameters par exemple, où tu retouveras un assistant.
Good luck!
Commenter la réponse de mdemo