Bonjour tout le monde :)
Je veux ajouter un champs "autre" dans une combo box qui prends ses valeurs de ma base de données par le binding
mais je ne sais pas comment faire :oops:
Merci d'avance :)
Version imprimable
Bonjour tout le monde :)
Je veux ajouter un champs "autre" dans une combo box qui prends ses valeurs de ma base de données par le binding
mais je ne sais pas comment faire :oops:
Merci d'avance :)
Sûrement un cas d'utilisation pour une CompositeCollection...
Bonsoir ;
Merci beaucoup Pragmateek pour ton indication :)
J'ai essayé ceci :Mais ça n'a pas marché :roll:Code:
1
2
3
4
5
6
7
8 <ComboBox x:Name="combocatP" HorizontalAlignment="Left" Height="25" Margin="180,160,0,0" VerticalAlignment="Top" Width="120"> <ComboBox.ItemsSource> <CompositeCollection> <ComboBoxItem Content="Autre"></ComboBoxItem> <CollectionContainer Collection="{Binding Path= catP}" /> </CompositeCollection> </ComboBox.ItemsSource> </ComboBox>
Mon combo box ne m'affiche pas le champ " Autre " :p :p
Euh tu ne veux pas plutôt dire qu'elle ne t'affiche QUE le champ "Autre" ?...
Si c'est le cas c'est "normal" et le fix est un peu tordu :
Code:
1
2
3
4
5
6
7
8
9
10
11 <ComboBox x:Name="combocatP" HorizontalAlignment="Left" Height="25" Margin="180,160,0,0" VerticalAlignment="Top" Width="120"> <ComboBox.Resources> <CollectionContainer x:Key="cc" Collection="{Binding Source={x:Reference combocatP},Path=DataContext.catP}" /> </ComboBox.Resources> <ComboBox.ItemsSource> <CompositeCollection> <ComboBoxItem Content="Autre"></ComboBoxItem> <StaticResourceExtension ResourceKey="cc"></StaticResourceExtension> </CompositeCollection> </ComboBox.ItemsSource> </ComboBox>
:aie:
Non par contre il ne m'affiche que les données de ma bases de données :roll: ( du binding ..)
J'ai testé ton code mais j'ai toujours le même problème , mon champ " autre " ne s'affiche pas :(
Je pense ça peut etre du au code du binding ( ci-dessous) de mon combobox :oops:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void bindComboCatP(ComboBox comboBoxName) { SqlDataAdapter da = new SqlDataAdapter("Select * FROM CategorieProduit", Connexion); DataSet ds = new DataSet(); da.Fill(ds, "catP"); comboBoxName.ItemsSource = ds.Tables["catP"].DefaultView; comboBoxName.DisplayMemberPath = ds.Tables["catP"].Columns["nomCategorie"].ToString(); comboBoxName.SelectedValuePath = ds.Tables["catP"].Columns["codeCategorie"].ToString(); comboBoxName.SelectedIndex = 0; }
Merci d'avance pour vos réponses ;)
Ah dans ce cas c'est normal si tu écrases l'ItemsSource depuis le code behind.
En plus tu bindes à des objets "complexes".
Voici ce que ça devrait donner :
Code:
1
2
3
4
5 comboBoxName.ItemsSource = new CompositeCollection { new CollectionContainer{ Collection = ds.Tables["catP"].DefaultView }, new CollectionContainer{ Collection = new [] { new { nomCategorie = "Autre", codeCategorie = -1 } } } };
Merci beaucoup Pragmateek :lol: ça marche maintenant :)