Bonjour,
depuis hier matin je n'arrive pas à résoudre un problème qui m'avait l'air simple au départ. Je voudrais forcer une listBox à une valeur par défaut au démarrage du programme et répercuter les valeurs dans une DataGrid.
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <ListBox Height="100" Name="listBoxUFR" Width="175" SelectionChanged="listBoxUFR_SelectionChanged"> <ListBox.Items> <ListBoxItem Content="Sciences" /> <ListBoxItem Content="Lettres et Langues" /> <ListBoxItem Content="Droit et Sciences Eco" /> <ListBoxItem Content="I.U.T." /> </ListBox.Items> </ListBox>
Ce que je sais faire c'est : lorsque je sélectionne une valeur de la listBox, j'appelle un programme php qui fait une requète mysql. Le résultat de cela est désérialisé et alimente ma DataGrid avec le code suivant :
En xaml
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <data:DataGrid AutoGenerateColumns="False" Height="409" Name="_DiplomeGrid" Width="626"> <data:DataGrid.Columns> <data:DataGridTextColumn Header="Nom du diplome" Binding="{Binding diplome}" /> <data:DataGridTextColumn Header="Libéllé" Binding="{Binding libelle_diplome}" /> </data:DataGrid.Columns> </data:DataGrid>
En C#
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void GetDiplomeOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Error != null || e.Cancelled) { MessageBox.Show("Erreur lors de la lecture des diplômes"); return; } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Ufr)); Ufr monUfr = serializer.ReadObject(e.Result) as Ufr; _DiplomeGrid.ItemsSource = monUfr.diplomesLus; }
Code c# : 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 private void listBoxUFR_SelectionChanged(object sender, SelectionChangedEventArgs e) { ListBoxItem lib = ((sender as ListBox).SelectedItem as ListBoxItem); if (lib.Content.ToString() == "Sciences") { WebClient wc = new WebClient(); wc.OpenReadCompleted += GetDiplomeOpenReadCompleted; wc.OpenReadAsync(new Uri(_CallbackUrl + "?ufr_sciences=true")); } if (lib.Content.ToString() == "Lettres et Langues") { WebClient wc = new WebClient(); wc.OpenReadCompleted += GetDiplomeOpenReadCompleted; wc.OpenReadAsync(new Uri(_CallbackUrl + "?ufr_lettres_langues=true")); } ect ect ...
Ce que j'aimerais faire c'est avant InitializeComponent() :
1 - Forcer ma valeur de listBox sur la première valeur
2 - Appeler ma fonction PHP pour alimenter ma DataGrid en consèquence
avec un code du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 _CallbackUrl = "http://localhost/PHP/TTT3.php"; WebClient wc = new WebClient(); wc.OpenReadCompleted += GetDiplomeOpenReadCompleted; wc.OpenReadAsync(new Uri(_CallbackUrl + "?ufr_sciences=true")); InitializeComponent(); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Ufr)); Ufr monUfr = serializer.ReadObject(e.Result) as Ufr; Ufr monUfr = serializer.ReadObject(e.Result) as Ufr; _DiplomeGrid.ItemsSource = monUfr.diplomesLus;
mais à ce niveau là je ne sais pas utiliser correctement Ufr monUfr = serializer.ReadObject(e.Result) as Ufr parce-que e n'éxiste pas dans ce contexte.
En espérant avoir été assez clair
Merci de me lire et de m'aider.
Partager