private static OrganizationalUnitPickerService.OUElement BuildOUTree(DataTable dataTable)
        {
            Dictionary <string, OrganizationalUnitPickerService.OUElement> dictionary = new Dictionary <string, OrganizationalUnitPickerService.OUElement>();

            OrganizationalUnitPickerService.OUElement ouelement = new OrganizationalUnitPickerService.OUElement();
            ouelement.ID            = (ouelement.Name = "root");
            ouelement.CanNewSubNode = false;
            dictionary.Add(ouelement.Name, ouelement);
            foreach (object obj in dataTable.Rows)
            {
                DataRow    dataRow    = (DataRow)obj;
                ADObjectId adobjectId = (ADObjectId)dataRow["Identity"];
                string     text       = adobjectId.ToString();
                int        num        = OrganizationalUnitPickerService.LastSplitCharPosition(text);
                string     key        = (num == -1) ? ouelement.Name : text.Substring(0, num);
                if (dictionary.ContainsKey(key))
                {
                    OrganizationalUnitPickerService.OUElement ouelement2 = new OrganizationalUnitPickerService.OUElement();
                    ouelement2.ID            = adobjectId.ObjectGuid.ToString();
                    ouelement2.CanNewSubNode = false;
                    ouelement2.Name          = text.Substring(num + 1);
                    dictionary[key].Children.Add(ouelement2);
                    dictionary.Add(text, ouelement2);
                }
            }
            return(ouelement);
        }
        public static void GetListPostAction(DataRow inputRow, DataTable dataTable, DataObjectStore store)
        {
            dataTable.BeginLoadData();
            DataView defaultView = dataTable.DefaultView;

            defaultView.Sort = "Identity asc";
            OrganizationalUnitPickerService.OUElement ouelement = OrganizationalUnitPickerService.BuildOUTree(defaultView.ToTable());
            dataTable.Rows.Clear();
            DataRow dataRow = dataTable.NewRow();

            dataRow["ID"]            = ouelement.ID;
            dataRow["Name"]          = ouelement.Name;
            dataRow["CanNewSubNode"] = ouelement.CanNewSubNode;
            dataRow["Children"]      = ouelement.Children;
            dataTable.Rows.Add(dataRow);
            dataTable.EndLoadData();
        }