Bonjour
J'ai une combobox que je rempli via un objectDataProvider (odpUgmUsers).
Lors de la sélection d'une valeur, j'utilise l'événement "selectionChanged" pour remplir une listBox via un autre objectDataProvider (odpUgmUserGroups).
- Lorsque je sélectionne une première fois un élément dans la combobox, ma listbox se rempli bien avec les valeurs retournée par odpUgmUserGroups .
Mais lorsque je sélectionne un second item de la combobox, plus rien ne se passe.
voicis mon code
Merci pour votre aide
Code behind
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
23
24
25
26
27
28
29
30
31
32
33
34
35 <UserControl.Resources> <ObjectDataProvider x:Key="odpUgmUsers" ObjectType="{x:Type local:GbbUserProvider}" /> <ObjectDataProvider x:Key="odpUgmUserGroups" ObjectType="{x:Type local:GbbUserProvider}" /> </UserControl.Resources> <ComboBox Focusable="true" Height="23" Margin="0,65.013,0,0" Name="cbListLeft" VerticalAlignment="Top" IsEditable="True" IsReadOnly="False" IsTextSearchEnabled="True" DataContext="{Binding Source={StaticResource odpUgmUsers}}" ItemsSource="{Binding}" SelectionChanged="cbListLeft_SelectionChanged"> <!--DataContext="{Binding Source={StaticResource odpGbbUser}}" ItemsSource="{Binding}" TextBoxBase.TextChanged="cbListLeft_TextChangedEventArgs" SelectedValue="">--> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Cn}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> <ListBox Margin="0,129.948,0,26.656" Name="lbListLeft" DataContext="{Binding Source={StaticResource odpUgmUserGroups}}" ItemsSource="{Binding}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Cn}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Object Data provider
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
23
24
25
26
27
28
29
30
31
32
33
34
35 public partial class UGMTab : UserControl { DirectoryEntry _deMainDirectoryEntry; DirectoryEntry _deGroupEntry; public UGMTab() { InitializeComponent(); ObjectDataProvider odpGbbUser = FindResource("odpUgmUsers") as ObjectDataProvider; RemotingModule module = new RemotingModule(ADMFields.enuADMModule.Ugm, ADMFields.enuRthHubs.ParisHub); string _sMainDirectoryEntry = module.ModuleConfiguration["ADEntryDn"]; _deMainDirectoryEntry = ADConnection.createDirectoryEntry("LDAP://"+_sMainDirectoryEntry); string _sGroupEntry = module.ModuleConfiguration["GroupEntry"]; _deGroupEntry = ADConnection.createDirectoryEntry("LDAP://" + _sGroupEntry); odpGbbUser.MethodName = "GetUsers"; odpGbbUser.MethodParameters.Add(_deMainDirectoryEntry); } //Lorsque l'on sélectionne un utilisateur dans la combobox, on rempli la listbox avec les groupes auquel il appartient private void cbListLeft_SelectionChanged(object sender, SelectionChangedEventArgs e) { ADUser userRetreived = (ADUser)cbListLeft.SelectedItem; ObjectDataProvider odpUserGroup = FindResource("odpUgmUserGroups") as ObjectDataProvider; //Rappel la méthode pour récupérer les groupe de l'utilisateur choisi dans la combobox odpUserGroup.MethodName = "GetUserGroups"; odpUserGroup.MethodParameters.Add(_deGroupEntry); odpUserGroup.MethodParameters.Add(userRetreived); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //Methode to retreive a list of Users public static ObservableCollection<ADUserGroup> GetUserGroups(DirectoryEntry entry, ADUser us) { ObservableCollection<ADUserGroup> _results = new ObservableCollection<ADUserGroup>(); foreach (ADUserGroup obj in us.getGroups(entry)) { _results.Add(obj); } return _results; }
Partager