Próbuję uzyskać zapytanie LDAP, aby zebrać wszystkie właściwości, które posiadamy o naszych użytkownikach bez wcześniejszego określenia właściwości, chciałbym wyświetlić to w tabeli, wykorzystując poniższy kod. Działa to, jeśli odkomentuję wyszukiwanie.PropertiesToLoad.Add ("cn"); linii i wyświetli wszystkie inne właściwości, które dodaję w ten sam sposób, ale nie wtedy, gdy wykonuję pełne wyszukiwanie wszystkich właściwości.Active Directory Wyświetl wszystkie właściwości w tabeli
DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.CacheResults = true;
//search.PropertiesToLoad.Add("cn");
SearchResultCollection allResults = search.FindAll();
DataTable resultsTable = new DataTable("Results");
//add columns for each property in results
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
//loop to add records to DataTable
foreach (SearchResult result in allResults)
{
int tmp = result.Properties.Count;
DataRow row = resultsTable.NewRow();
foreach (string columnName in search.PropertiesToLoad)
{
if (columnName.Equals("lastlogon"))
{
if (result.Properties.Contains(columnName))
row[columnName] = ConvertDate(result.Properties[columnName].ToString());
else
row[columnName] = "";
}
else
{
if (result.Properties.Contains(columnName))
row[columnName] = result.Properties[columnName][0].ToString();
else
row[columnName] = "";
}
}
resultsTable.Rows.Add(row);
}
gridResults.DataSource = resultsTable;
Problem wydaje się być z
foreach (string colName in allResults.PropertiesLoaded)
resultsTable.Columns.Add(colName, colName.GetType());
Spodziewałem to do pętli wszystkie właściwości, gdy nie PropertiesToLoad zostało określone, ale nie jest ich sposób, aby osiągnąć to, co chcę.
Wiem, że potrzebuję kilku prób odłowów i innych bitów w kodzie, jak na razie, jest to zgrubny szkic.
dzięki !!!!!!!!! – Sak