Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplir DataGridView à partir d'un findAll()

    16 mai 2019 à 9:38:46

    Bonjour à tous

    Je cherche à remplir un DataGridView à partir d'un searchResult.FindAll().

    Je fais une recherche d'utilisateur par nom, quand plusieurs utilisateurs ont le même nom je voudrais que le datagrid s'ouvre et se remplisse avec les utilisateurs qui ont le même nom

    J'arrive bien à détecter le nombre de résultat et à mettre des infos dans le datagrid mais le problème est que le tableau est rempli avec le même utilisateur à chaque fois et non avec tous les utilisateurs qui porte le même nom

    try
                        {
                            string RNom = row.Cells[1].Value.ToString();
    
    
    
    
                            DirectoryEntry ldapConnection = new DirectoryEntry("LDAP://mondomaine", login, mdp);
                            DirectorySearcher searcher = new DirectorySearcher(ldapConnection);
                            searcher.Filter = "(sn=" + RNom + ")";
    
                            foreach (SearchResult result in searcher.FindAll())
                            {
                                // On récupère l'entrée trouvée lors de la recherche
    
     DirectoryEntry DirEntry = result.GetDirectoryEntry();
    
                                //On  affiche les informations désirées
    
    
                                //Si plusieurs résultats à la recherche ouvre une datagrid pour selectionner l'utilisateur souhaité 
                                if (searcher.FindAll().Count > 1)
                                {
                                    dataGridView1.Visible = true;
                                    dataGridView1.RowCount = searcher.FindAll().Count;
    
    
    
                                    foreach (DataGridViewRow rows in dataGridView1.Rows)
                                    {
                                       
    
                                        rows.Cells[0].Value = DirEntry.Properties["SAMAccountName"].Value.ToString();
                                        rows.Cells[1].Value = DirEntry.Properties["sn"].Value.ToString();
                                        rows.Cells[2].Value = DirEntry.Properties["givenName"].Value.ToString();
                                    }
    
    
                                }
                            }
                        }

    Merci de votre aide

    -
    Edité par STATIIKZ 16 mai 2019 à 9:39:15

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2019 à 19:04:13

      Utilisez le DataBinding à la place de ce bricolage, SVP.

      Vous écrasez systématiquement toutes les lignes avec la mêmes DERNIÈRE information trouvée.

      Avec le DataBinding, ça serait bien plus simple.

      Au lieu de bricoler les lignes, vous n'avez qu'a changer la propriété DataSource de votre "dataGridView1".

      Créer un DataSet avant votre boucle, ajoutez les informations de chaque "DirectoryEntry" dans une ligne de votre DataSet.

      Après votre boucle, affectez la propriété "DataSource" de de votre "dataGridView1" au DataSet que vous venez de créer et de remplir.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        23 mai 2019 à 9:58:44

        Bonjour,

        Désolé pour la réponse tardive. 

        J'ai bien compris ce que vous m'avez dit mais le problème c'est que je n'ai jamais utilisé de DataSet et je ne trouve pas comment mettre mes directory entry dedans.

        Si jamais vous avez une idée ou juste un tuto qui explique comment fonctionne le dataset avec l'ad je suis preneur :)

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2019 à 10:48:15

          earp91 a écrit:

          MSDN est ton ami !

          https://docs.microsoft.com/fr-fr/dotnet/api/system.data.dataset?view=netframework-4.8


          J'ai déjà consulté la doc mais l'exemple qu'ils donnent est avec une connexion à une bdd sql et non avec un ldap pour se connecter à l'ad...

          -
          Edité par STATIIKZ 23 mai 2019 à 10:55:10

          • Partager sur Facebook
          • Partager sur Twitter
            23 mai 2019 à 11:16:43

            Microsoft présente simplement ca car c'est le cas d'utilisation le plus répandu.

            En cherchant sur le net pour remplir un data set manuellement : https://stackoverflow.com/questions/3125864/adding-rows-to-dataset

            Le mode opératoire resumé :

            1. Tu crées ton DataSet

            2. Tu crées ta DataTable

            3. Tu spécifies la structures de ta DataTable avec les DataColumn

            4. Tu crées tes enregistrements avec des DataRow

            5. Tu ajoutes tes DataRow au DataTable

            6. Tu ajoutes ta DataTable à ton DataSet

            -
            Edité par earp91 23 mai 2019 à 11:27:08

            • Partager sur Facebook
            • Partager sur Twitter

            Remplir DataGridView à partir d'un findAll()

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown