Filter sur un BindingSource.

Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
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
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
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é.
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
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
+
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
essaie un truc du style
bindingsrc.Filter = "Id LIKE %'maa'%";
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

>> 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
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
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
Messages postés
117
Date d'inscription
dimanche 14 novembre 2004
Statut
Membre
Dernière intervention
19 janvier 2008

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