2016-06-22 4 views
-1

Я создал ListView (Details) с тремя столбцами, и я хочу их заполнить, но я получаю эту ошибку при запуске приложения в Active Directory: «Указатель был вне диапазона. отрицательный и меньше размера коллекции ». Имя параметра: индексНе удалось заполнить ListView столбцами

UPDATE:. Этот код теперь работает без ошибок (но мне нужно преобразовать в формат даты и времени

directorySearcher.PropertiesToLoad.Add("name"); 
directorySearcher.PropertiesToLoad.Add("physicalDeliveryOfficeName"); 
directorySearcher.PropertiesToLoad.Add("pwdlastset"); 

SearchResultCollection results = directorySearcher.FindAll(); 

foreach (SearchResult result in results) 
{ 
    string name = result.Properties["name"][0].ToString(); 
    string office = result.Properties["physicalDeliveryOfficeName"][0].ToString(); 
    string pwdlastset = result.Properties["pwdlastset"][0].ToString(); 

    ListViewItem item = new ListViewItem(new string[] { name, office, pwdlastset}); 
    SearchResult.Items.Add(item); 
} 

Не могли бы вы ELL мне, как исправить это

+0

Пробовал ли вы отлаживать код и видеть, является ли какое-либо значение нулевым или не имеет данных, потому что иногда это причина, почему вы получаете ошибку индекса. – DharaPPatel

+0

Запрос LDAP возвращает 3 пользователя, и все они имеют имя, офис и pwdlastset не равно нулю. – expirat001

+0

и где именно он падает? когда вы пытаетесь получить имя, офис или ценность? –

ответ

0

? Я думаю, это потому, что PwdLastSet нужна буквы L и S в столице Попробуйте LinQ решение, чтобы избежать пустого исключения:.

directorySearcher.PropertiesToLoad.Add("name"); 
directorySearcher.PropertiesToLoad.Add("physicalDeliveryOfficeName"); 
directorySearcher.PropertiesToLoad.Add("pwdLastSet"); 

SearchResult.Items.AddRange(
    directorySearcher.FindAll().Where(x => x.Properties != null).Select(x => new ListViewItem(new string[] { 
     x.Properties["name"] != null && x.Properties["name"].Any() 
      ? x.Properties["name"][0] 
      : String.Empty, 
     x.Properties["physicalDeliveryOfficeName"] != null && x.Properties["physicalDeliveryOfficeName"].Any() 
      ? x.Properties["physicalDeliveryOfficeName"][0] 
      : String.Empty, 
     x.Properties["pwdLastSet"] != null && x.Properties["pwdLastSet"].Any() 
      ? x.Properties["pwdLastSet"][0] 
      : String.Empty 
    })) 
); 
+0

Исправить. большое спасибо – expirat001

Смежные вопросы