none
Active Directory et liste des properties RRS feed

  • Question

  • Bonjour,
    j'ai regardé/utilisé des tutoriels sur Active Directory.
    Actuellement, j'aimerai faire un menu déroulant des properties description et department.

    j'ai essayé de cette manière:


    System.DirectoryServices.PropertyValueCollection pvc = this._mySearchRoot.Properties[property];

                //initialisation de la DataTable
                DataTable dt = new DataTable();
                dt.Columns.Add(property, Type.GetType("System.String"));

                foreach (object o in pvc)
                    {
                        //création de la DataRow
                        DataRow dr = dt.NewRow();
                        dr[property] = o.ToString();
                        dt.Rows.Add(dr);
                    }

                return dt;
            }


    ou this._mySearchRoot est mon this._mySearchRoot!

    et je n'ai eu que 1 élément de description et aucun de department :x

    dans quelle direction dois-je effectuer des recherches, car visiblement je suis pas dans la bonne Wink

    merki,

    cdt,

    OminiuS
    mardi 15 janvier 2008 12:56

Réponses

  • Voici la solution que j'ai trouvé :

      
    Extrait de code

          /// <summary>
            /// Obtient la liste valeurs de la propriété
            /// </summary>
            /// <param name="property">Propriété dont on veut obtenir la liste</param>
            /// <returns>DataTable des valeurs des propriétés</returns>
            public DataTable GetPropertyList(string property)
            {
                DirectorySearcher myDirectorySearcher = new DirectorySearcher(this.MySearchRoot);
                myDirectorySearcher.SearchScope = SearchScope.Subtree;

                myDirectorySearcher.Filter = "(objectClass=User)";
                myDirectorySearcher.PropertiesToLoad.Add(property);
                myDirectorySearcher.SearchScope = SearchScope.Subtree;
                myDirectorySearcher.Sort.Direction = System.DirectoryServices.SortDirection.Ascending;
                this.MySearchResults = myDirectorySearcher.FindAll();

                System.DirectoryServices.ResultPropertyValueCollection propertyValues;
                System.Collections.Specialized.StringCollection sc = new System.Collections.Specialized.StringCollection();

                foreach (System.DirectoryServices.SearchResult result in this.MySearchResults)
                {
                    propertyValues = result.Properties[property];
                    if ((propertyValues.Count > 0))
                    {
                        string res = propertyValues[0].ToString();
                        if (res != String.Empty && !sc.Contains(res))
                        {
                            sc.Add(res);
                        }
                    }
                }

                //initialisation de la DataTable
                DataTable dt = new DataTable();
                dt.Columns.Add(property, Type.GetType("System.String"));
                foreach (string s in sc)
                {
                    //création de la DataRow
                    DataRow dr = dt.NewRow();
                    dr[property] = s;
                    dt.Rows.Add(dr);
                }
                //tri
                dt.DefaultView.Sort = property + " ASC";

                return dt;
            }


    ou this._mySearchRoot est mon DirectoryEntry!

    voila, s'il y a mieux, je suis prenneur Wink
    mercredi 16 janvier 2008 08:11