private void CboRecherche_KeyUp(object sender, KeyEventArgs e) { ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext; string texteRecherche = cboRecherche.Text; if (e.Key == Key.Enter) { // On ajoute dans une liste temporaire les patients trouvés dans la liste des patients. List <Citoyen> LstCitoyenTrouve = LstCitoyenRecherche.FindAll((patient) => patient.Nom.IndexOf(cboRecherche.Text) != -1); // On vide la liste bindée avec la combobox controlModelListePatient.Citoyens.Clear(); // On doit remettre le texte dans le combobox, car le clear précédent détruit le texte inscrit par l'utilisateur cboRecherche.Text = texteRecherche; // Finalement, on copie tous les patients trouvés dans la liste installée dans le DataContext. LstCitoyenTrouve.ForEach((patient) => controlModelListePatient.Citoyens.Add(patient)); } else if (cboRecherche.Text == "") // Si la barre de recherche est vide, on remet tous les patients. Sinon, on vide la liste pour préparer la recherche. { // On vide la liste bindée avec la combobox controlModelListePatient.Citoyens.Clear(); LstCitoyenRecherche.ForEach((patient) => controlModelListePatient.Citoyens.Add(patient)); } }
/// <summary> /// C'est cette fonction qui effectue une requête à la bd pour prendre les citoyens. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CboProfessionnel_SelectionChanged(object sender, SelectionChangedEventArgs e) { ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext; // la fonction clear dans la fonction CboDepartements_SelectionChanged déclenche un selectionChanged // dans le cboProfessionnel lorsque son contenu est vide. Donc, il fait planté la requête ici. if (controlModelListePatient.Employes.Count != 0) { List <Citoyen> lstPatients = new List <Citoyen>(); Employe employeSelectionne = (Employe)cboProfessionnel.SelectedItem; Departement departementSelectionne = (Departement)cboDepartements.SelectedItem; if (employeSelectionne.Nom == "Tous" && departementSelectionne.Nom == "Tous") { lstPatients = Data.DataModelCitoyen.GetCitoyens(); } else if (employeSelectionne.Nom == "Tous") { lstPatients = Data.DataModelCitoyen.GetTousCitoyensDepartement((Departement)cboDepartements.SelectedItem); } else { lstPatients = Data.DataModelCitoyen.GetCitoyensLstPatient(employeSelectionne); } controlModelListePatient.Citoyens.Clear(); lstPatients.ForEach(patient => controlModelListePatient.Citoyens.Add(patient)); // Pour la barre de recherche LstCitoyenRecherche = lstPatients; } }
private void CboDepartements_SelectionChanged(object sender, SelectionChangedEventArgs e) { // On va chercher le contenu du DataContext pour modifier directement les valeurs ControlModelListePatient controlModelListePatient = (ControlModelListePatient)DataContext; // On met temporairement la nouvelle liste d'employés du département sélectionné dans une liste List <Employe> lstEmploye = Data.DataModelEmploye.GetLstEmployesDepartement((Departement)cboDepartements.SelectedItem); // On vide la liste dans le datacontext controlModelListePatient.Employes.Clear(); // On ajoute les nouveaux employés dans le datacontext lstEmploye.Add(new Employe { Nom = "Tous" }); // On met le critère Tous lorsque le département est changé. cboProfessionnel.SelectedItem = lstEmploye.Find((employe) => employe.Nom == "Tous"); lstEmploye.ForEach(employe => controlModelListePatient.Employes.Add(employe)); }
public ControlListePatient(GestionnaireEcrans gestionnaireEcrans, ObservableCollection <Departement> departements, ObservableCollection <Employe> employes, Departement departement, Employe employe) { InitializeComponent(); GestionnaireEcrans = gestionnaireEcrans; ControlModelListePatient controlModelListePatient = new ControlModelListePatient(gestionnaireEcrans, departement.EstNull() ? new ObservableCollection <Citoyen>(DataModelCitoyen.GetCitoyens()) : new ObservableCollection <Citoyen>(DataModelCitoyen.GetCitoyensLstPatient(employe)), departements, employes); // On met dans le datacontexte les infos qui seront liées dans le UserControl DataContext = controlModelListePatient; // Permet de sélectionner par défaut le département du professionnel dans la combobox // Je dois créer mes combobox avant de les mettre dans mon stackpanel puisque l'event selectedchange // s'enclenchait au démarrage et fait planter l'application à cause de mon système par défaut. initialiserCboDepartement(departements, departement.EstNull() ? new Departement { Nom = "Tous" } : departement); // Ensuite, il faut afficher dans le cboProfessionnel le professionnel par défaut initialiserCboProfessionnel(employes, employe, departement); // Pour la barre de recherche LstCitoyenRecherche = controlModelListePatient.Citoyens.ToList <Citoyen>(); }