Je vous présente mon problème succinctement :
-J'ai besoin de sélectionner une ville (CP/NOM) à partir d'une chaîne de caractère pouvant correspondre au nom ou bien au cp.
-La sélection se fait bien sauf su les noms de ville correspondant à plusieurs CP. Après recherche j'ai trouver ceci : Problème de sélection dans un AutoCompleteBox lorsque le ValueMemberBinding n'est pas unique
Mais cette solution ne me convient pas car je n'aime pas modifier les codes sources qui ne m'appartiennent pas.Pour corriger ceci, il faut modifier dans les sources du toolkit (fichier AutoCompleteBox.cs) la méthode UpdateTextCompletion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ... else { // Un item de la listbox a été sélectionné if ((SelectionAdapter != null) && (SelectionAdapter.SelectedItem != null)) { // Car la recherche par texte fait perdre l'objet sélectionné dans le cas de doublons newSelectedItem = SelectionAdapter.SelectedItem; } else { // Perform an exact string lookup for the text. This is a // design change from the original Toolkit release when the // IsTextCompletionEnabled property behaved just like the // WPF ComboBox's IsTextSearchEnabled property. // // This change provides the behavior that most people expect // to find: a lookup for the value is always performed. newSelectedItem = TryGetMatch(text, _view, AutoCompleteSearch.GetFilter(AutoCompleteFilterMode.EqualsCaseSensitive)); } }
-J'ai donc crée un champ VILLE_NOM_CP de la façon suivante :
-Mon problème à lieu sur le chargement de la liste de l'AutoCompleteBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 using System; namespace Projet1.Web { public partial class VILLE { public string VILLE_NOM_CP { get { return VILLE_NOM + " (" + VILLE_CP + ")"; } set { } } } }
Si quelqu'un à une idée, voir même une solution totalement différente de ma piste de recherche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private void vILLE_Populating(object sender, PopulatingEventArgs e) { vILLE_ENLDomainDataSource.Clear(); e.Cancel = true; AutoCompleteBox sd = sender as AutoCompleteBox; vILLE_ENLDomainDataSource.SortDescriptors.Clear(); vILLE_ENLDomainDataSource.FilterDescriptors.Clear(); vILLE_ENLDomainDataSource.SortDescriptors.Add( new SortDescriptor("VILLE_NOM", System.ComponentModel.ListSortDirection.Ascending)); vILLE_ENLDomainDataSource.SortDescriptors.Add( new SortDescriptor("VILLE_CP", System.ComponentModel.ListSortDirection.Ascending)); vILLE_ENLDomainDataSource.FilterDescriptors.Add( new FilterDescriptor("VILLE_NOM_CP", FilterOperator.StartsWith, vILLE_NOM_ENLAutoCompleteBox.Text)); /// Il m'indique ici que le champ n'existe pas vILLE_ENLDomainDataSource.FilterDescriptors.Add( new FilterDescriptor("VILLE_CP", FilterOperator.StartsWith, vILLE_NOM_ENLAutoCompleteBox.Text)); vILLE_ENLDomainDataSource.FilterOperator = FilterDescriptorLogicalOperator.Or; vILLE_ENLDomainDataSource.Load(); }
Merci d'avance.
Partager