Filter sur un BindingSource.

cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 9 mars 2007 à 22:33
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008 - 12 mars 2007 à 16:05
Bonjour,

Il semble que le filtre sur un Objet BindingSource ne fonctionne pas quand on le lie à une liste d'objet.
Par exemple, le code suivant affichera une liste avec 3 personnes alors
que le filtre est censé n'en laissé passer qu'une :

privatevoid Form1_Load(object sender, EventArgs e)
{
BindingSource bindingsrc = new BindingSource();
List personnes = new List();
personnes.Add(new Personne("maxime","maa"));
personnes.Add(new Personne("geoffrey", "gem"));
personnes.Add(new Personne("Gaël", "gam"));
bindingsrc.DataSource = personnes;
bindingsrc.Filter = "Id='maa'";
comboBox1.DataSource = bindingsrc;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
}
}
 
publicclass Personne
{
privatestring _Name;
privatestring _Id;
 
public Personne(string name, string id)
{
_Name = name;
_Id = id;
}
 
publicstring Name
{
get{return _Name; }
set{ _Name = value; }
}
 
publicstring Id
{
get{return _Id; }
set{ _Id = value; }
}
}
 


Savez-vous comment corriger ce problème ?

merci d'avance.
Mathmax

8 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
10 mars 2007 à 00:55
Salut, apparemment faudrait implementer IBindingListView, et ça n'a pas l'air super simple.

http://www.developersdex.com/vb/message.asp?p=2928&ID=%3C331C7D0B-3E35-4485-A83C-8280E57F0BFB%40microsoft.com%3E
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
10 mars 2007 à 01:03
Je viens juste de tomber sur ce lien il y a quelques minute et je teste en ce moment les classes proposées ici.

Ce que je trouve bizarre, c'est pourquoi ne pas avoir fait un filtre fonctionnel directement sur BindingSource. Un bug ? Ou est-ce volontaire ?
Mathmax
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
10 mars 2007 à 05:08
Oui bizarre, je ne sais pas trop non plus.. je pense que ça permet d'implementer son propre filtre pourtant ce genre de filtre existe déja sur d'autres objets. Ou alors le gars de chez MS qui a fait cette classe était pas assez payé.
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
10 mars 2007 à 12:04
pouf moi j'utilise plus jamais le binding source car le temps que l'on croit gagner en fait on le perd justement apres a essayer de faire que tout marche correctement
perso je prefere encore gérer tout en code au moins on controle tout :p
et si il faut on peut passer par un enumerator au lieu de faire une boucle sur la collection generic ainsi on gagne en performance
+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
10 mars 2007 à 12:17
essaie un truc du style
bindingsrc.Filter = "Id LIKE %'maa'%";
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
11 mars 2007 à 02:07
>> Salut, apparemment faudrait implementer

IBindingListView, et ça n'a pas l'air super simple.


Sur msdn,
il disent justement que "L'interface IBindingListView est implémentée par la classe BindingSource"... Alors je comprends pas trop.

Concernant la classe proposée ici, c'est un peu du bricolage, ça a pas l'air très performant... et surtout l'expression de filtre est très limité : on n'a le droit qu'à une égalité, pas de "like", pas de <>,...

romagny13, je viens d'essayer : bindingsrc.Filter = "Id LIKE %'maa'%"; mais ça ne marche pas non plus.

Il doit nous échapper quelques chose, je n'arrive pas à croire que  c'est un bug de  BindingSource. Faire un tri ou un filtre sur une liste d'objet est quelque chose de tellement
utile...

Mathmax
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
11 mars 2007 à 13:56
ya peut etre une histoire de currencys manager et dataontext qui entre en jeu

j'ai essayé ton code et c'est vrai ca passe pas
c'est grave la quand meme quand on a 4 loignes de code et devoir chercher comme cela a cause du bindingsource qui marche pas c la vraie galere

peut etre en regardant un peu avant reflector on peut mieux comprendre comment le bindingsource marche c'est que je vais faire

si j'arrive a faire fonctionner correctement je vous tiendrai au courant
0
thorgal1612 Messages postés 117 Date d'inscription dimanche 14 novembre 2004 Statut Membre Dernière intervention 19 janvier 2008
12 mars 2007 à 16:05
Salut,

Je voudrais faire la même chose mais je n'arrive même pas à intialiser ma combo correctement.


Vous avez l'air de savoir utiliser le binding sur des combos. Y'en a t'il un de vous qui peut jeter un coup d'oeil sur mon pb, s'il vous plaît ?



http://www.csharpfr.com/infomsg_CHARGEMENT-COMBO_902132.aspx



Merci
0
Rejoignez-nous