1

现在,我正在尝试提出 2DropDownList名,一名员工DropDownList和另一名经理DropDownList

首先,我不熟悉 Active Directory 的工作原理,但在进行了一些研究后,我确实发现了类似下面的代码,据我所知,它代表了 Manager 的定义:

   Dim deEmployee As New DirectoryEntry("LDAP://CN=John Employee,OU=Sales,DC=Corp,DC=com")

   deEmployee.[Property]("manager") = "CN=Peter Manager,OU=Sales,DC=Corp,DC=com"
   deEmployee.CommitChanges()

由于有几个经理,我可以像上面那样对名称进行硬编码 = CN=Peter Manager

我可以使用哪个组来代替 Active Directory 中的经理CN=Peter Manager

但对我来说更大的问题是,如果我从第一个中选择员工DropDownList,它如何DropDownList用该员工的经理填充第二个?

据我了解,部门是将员工与经理联系起来的属性,但我如何在代码中使用它?

在正常的级联下拉列表中,我可以选择员工并在第一个下拉列表中列出员工所属的部门,在第二个下拉列表中,我可以在第一个下拉列表中选择部门 = theDepartmentListed 的经理。

那是查询数据库,但在我的例子中,我们查询的是 Active Directory。

有人可以展示如何根据部门将第一名员工DropDownList和第二名经理之间的关系联系起来吗?DropDownList

4

1 回答 1

1

AD 中没有内置的管理员组,您可以直接从组或 OU 中查询他们的唯一方法是您的组织添加了一个。

没有自动将员工链接到经理,因此您必须查询部门并选择正确的用户作为经理。

您将需要编写一个查询,以获取除所选用户之外的部门中的所有用户,这样的事情应该可以工作:

Imports System.DirectoryServices

...

Protected Sub EmployeeChanged(sender as object, e as EventArgs) Handles ddlEmployees.SelectedIndexChanged

    Dim selectedUser as new DirectoryEntry(ddlEmployees.SelectedValue) 'assuming your Value on the empoyees dropdown is the LDAP object path
    Dim domainRoot as new DirectoryEntry("LDAP://DC=corp,DC=com")
    Dim searcher as new DirectorySearcher()
    searcher.SearchRoot = domainRoot 
    searcher.Filter = "(&(objectClass=user)(department=" & selectedUser.Properties("department").Value & "))"

    Dim results as SearchResultCollection = searcher.FindAll()

    For Each result as SearchResult in results

        Dim de as DirectoryEntry = result.GetDirectoryEntry()

        If de IsNot Nothing Then

            If Not de.Properties("samaccountname").Value.ToString().ToLower() = selectedUser.Properties("samaccountname").Value.ToString().ToLower() Then

                ddlManagers.Items.Add(de.Properties("displayName").Value.ToString(), de.Properties("distinguishedName").Value.ToString())

            End If

        End If

    Next

End Sub

有关编写 LDAP 查询的更多信息:http ://technet.microsoft.com/en-us/library/aa996205(v=exchg.65).aspx

于 2013-02-14T13:11:49.307 回答