Skip to main content
Email Password   helpLost your password?

Picker control test app

Introduction

A basic Windows control library for selecting objects in your Active Directory.

Background

I've been involved in several Active Directory projects and frequently have had the need for a "picker" utility to select objects in the AD hierarchy. I decided to roll my own and encapsulate it in a Windows control library.

Sample Usage

Add the control to the list of Windows Forms controls in Visual Studio .NET, then drag the control onto a Windows Form. The control will automatically obtain your Active Directory root path and begin building a hierachal tree of the objects it finds.

private void AddTreeNodes(TreeNode node)
{
    Cursor.Current = Cursors.WaitCursor;
    treeView1.BeginUpdate();
    adh = new ADHelper();
    adh.GetChildEntries((string)node.Tag);
    IDictionaryEnumerator enumerator = adh.Children.GetEnumerator();

    // append children

    while (enumerator.MoveNext())
    {
        TreeNode childNode = new TreeNode((string)enumerator.Key);
        childNode.Tag = enumerator.Value; // ADsPath

        node.Nodes.Add(childNode);


        // specific object types

        if (!alExceptions.Contains(node.Text))
            childNode.ImageIndex =
                SetImageIndex(enumerator.Key.ToString().Substring(0,2));
        else
            childNode.ImageIndex = 3; // computer image

    }
    treeView1.EndUpdate();
    Cursor.Current = Cursors.Default;
}

AddTreeNodes() takes only one parameter, the parent TreeNode object. It then proceeds to add every child object it finds. Similar to Microsoft's ADSI Edit tool, the control displays a plus sign to indicate if a node has one or more child nodes.

Returning the ADsPath

Each time a node is selected in the hierarchy, the ADsPath public property is updated to reflect the fully-qualified path to the object (i.e. LDAP://OU=DEV,OU=US,DC=CORPORATE,DC=MYDOMAIN,DC=COM).

public void GetChildEntries(string adspath)
{
    if (adspath.Length > 0)
        entry = new DirectoryEntry(adspath);
    else
        entry = new DirectoryEntry();

    foreach (DirectoryEntry childEntry in entry.Children)
    {
        _htChildren.Add(childEntry.Name, childEntry.Path);
    }
}
private void treeView1_AfterSelect(object sender, 
      System.Windows.Forms.TreeViewEventArgs e)
{
    _adspath = (string)e.Node.Tag;
}

Compatibility

The control has been tested on Windows 2000/XP/2003. It should work for Windows 9x/NT with the Microsoft Active Directory Client Extensions installed.

History

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
GeneralThe doubled child items [modified] Pin
psychic86
22:23 28 Jul '08  
GeneralThank you very much Pin
lucastar
19:42 17 Jan '08  
GeneralRe: Thank you very much Pin
Marc Merritt
4:05 24 Jan '08  
GeneralRe: Thank you very much Pin
lucastar
7:31 5 Feb '08  
GeneralThanks Pin
hkdl2000
9:46 27 Jun '07  
GeneralRe: Thanks Pin
Marc Merritt
17:10 28 Jun '07  
GeneralOUs are doubled Pin
andrei_teodorescu
17:05 8 Jul '06  
GeneralRe: OUs are doubled Pin
sebaj
5:21 24 Feb '07  
GeneralNames ordered AD Pin
tysonx
5:17 6 Jun '06  
GeneralRe: Names ordered AD Pin
Marc Merritt
3:07 12 Jun '06  
QuestionHow can i get the selected object? Pin
rbmrf
8:29 9 Mar '06  
AnswerRe: How can i get the selected object? Pin
Marc Merritt
8:48 9 Mar '06  
AnswerRe: How can i get the selected object? Pin
Data-Base
4:53 17 Jul '08  
GeneralSorted Output? Pin
VBDelinquent
4:41 19 Dec '05  
GeneralRe: Sorted Output? Pin
Marc Merritt
8:00 22 Dec '05  
GeneralHelp Using in VS2005 Pin
astocks
17:50 19 Oct '05  
GeneralRe: Help Using in VS2005 Pin
Marc Merritt
2:27 20 Oct '05  
GeneralRe: Help Using in VS2005 Pin
astocks
10:48 20 Oct '05  
GeneralRe: Help Using in VS2005 Pin
Marc Merritt
12:40 20 Oct '05  
GeneralRe: Help Using in VS2005 Pin
astocks
15:17 21 Oct '05  
QuestionSpecified domain does not exist Pin
giles papworth
0:58 6 Sep '05  
AnswerRe: Specified domain does not exist Pin
Marc Merritt
4:48 12 Sep '05  
GeneralRe: Specified domain does not exist Pin
Dave Midgley
5:41 5 Oct '05  
GeneralRe: Specified domain does not exist Pin
Marc Merritt
13:01 20 Oct '05  
GeneralRe: Specified domain does not exist Pin
Stefan de Groot
9:02 17 Apr '07  


Last Updated 16 May 2004 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009