2014-11-26 7 views
0

Я запускаю запрос AD, чтобы вытащить выбранные атрибуты из профиля пользователя. Я выбираю extensionAttribute3, 4, 5, 6, 7 & 8. Хотя я могу получить результат для отображения в виде текста, я хотел бы установить выбранный volaue combobox для результатов.Настройка ComboBox Выбранное значение для запроса AD

Атрибут расширения 3, 5 & 7 = вопросы безопасности, 4, 6 & 8 являются ответами. У меня есть 3 comboboxes, каждый из которых содержит список из 15 возможных вопросов безопасности, которые пользователи могут выбрать, а затем предоставить ответы. У меня есть мой скрипт для обновления AD с ответами & ответов. Однако, когда я запускаю приложение еще раз, я хотел бы вытащить существующие вопросы из extensionAttribute 3, 5 & 7, в качестве значения по умолчанию, выбранного для comboBox foreach.

Текущий код AD Запрос:

Private Function GetUserProperties() 
    Dim ADName As String = GetLogonName() 
    Dim CurrentPIN As String = Nothing 
    Dim bSuccess As Boolean = False 
    Dim dirEntry As DirectoryEntry = GetDirectoryEntry() 
    Dim dirSearcher As DirectorySearcher = New DirectorySearcher(dirEntry) 
    Dim Q1Value As String = Nothing 
    dirSearcher.Filter = ("(samAccountName=" & ADName & ")") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute3") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute4") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute5") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute6") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute7") 
    dirSearcher.PropertiesToLoad.Add("extensionAttribute8") 
    dirSearcher.SearchScope = SearchScope.Subtree 
    Try 
     Dim dirResult As SearchResult = dirSearcher.FindOne() 
     bSuccess = Not (dirResult Is Nothing) 
     If dirResult Is Nothing OrElse dirResult.GetDirectoryEntry.Properties("extensionAttribute3").Value Is Nothing Then 
      Return "<not set>" 
     Else 
      Q1Value = dirResult.GetDirectoryEntry.Properties("extensionAttribute3").Value.ToString 
      Q1ComboBox.SelectedIndex = Q1Value 
     End If 
    Catch ex As Exception 
     bSuccess = False 
     MsgBox("No Connection to the domain." & Environment.NewLine & "Please connect to corporate network & try again.", MsgBoxStyle.Critical, "Network Error") 
     Application.Exit() 
    End Try 
    Return False 
End Function 
+0

Что вы хотите сказать? – baldpate

+0

Извините, не прояснилось. У меня возникают проблемы с перенастройкой значений extensionAttribute от 3 до 8, а также в поле со списком или текстовое поле. Я получаю только первый результат. Кажется, что Ic не возвращает несколько значений, возвращаемых функцией. –

+0

В настоящее время возвращается runAttribute3. Но я не могу получить extensionAttribute4-8 для отображения. я называю fucntion, как показано ниже: 'Private Sub Form1_Load (отправителем как объект, е As EventArgs) Ручки MyBase.Load Попробуйте Dim ADUser Как System.DirectoryServices.AccountManagement.UserPrincipal ADUser = System.DirectoryServices.AccountManagement.UserPrincipal .Current дим отображаемое_имя As String = ADUser.GivenName & "" & ADUser.Surname Username.Text = отображаемое_имя extension3.Text = GetUserProperties() ComboBox1.SelectedText = GetUserProperties() Выгода ех как исключение MsgBox ("Ошибка ") End Try End Sub' –

ответ

0

Это действительно трудно кода формата в комментариях, я их здесь вместо этого.
Я не программист VB, может иметь синтаксическую ошибку.

Вы не указываете код для extensionAttribute4-8, поэтому трудно найти, что с ними не так. Вы имеете в виду расширениеAttribute4-8, просто повторение блока if-else внутри try-catch не работает?
Например, вы не можете получить значение extensionAttribute4 ниже?

' code for extensionAttribute3, omitted here 
.... 

' code for extensionAttribute4 
If dirResult Is Nothing OrElse dirResult.GetDirectoryEntry.Properties("extensionAttribute4").Value Is Nothing Then 
    Return "<not set>" 
Else 
    A1Value = dirResult.GetDirectoryEntry.Properties("extensionAttribute4").Value.ToString 
    A1ComboBox.SelectedIndex = A1Value 
End If 

' repeat for extensionAttribute5-8 
.... 

Для использования атрибута уже загруженный в SEARCHRESULT, вы уже обрабатываете преобразование в задачу строки (упоминается в комментариях) по телефону ToString. Вы можете просто сделать то же самое. Но вместо проверки dirResult.GetDirectoryEntry.Properties("...").Value Is Nothing, вы должны проверить dirResult.Properties("...").Count > 0.

Dim dirResult As SearchResult = dirSearcher.FindOne() 
    bSuccess = Not (dirResult Is Nothing) 
    If dirResult Is Nothing OrElse dirResult.Properties("extensionAttribute3").Count <= 0 Then 
     Return "<not set>" 
    Else 
     Q1Value = dirResult.Properties("extensionAttribute3")[0].ToString 
     Q1ComboBox.SelectedIndex = Q1Value 
    End If 
Смежные вопросы