2009-03-02 2 views
8

Привет Я развиваюсь с использованием пространства имен SharePoint, и при попытке получить столбец URL из одного из моих lsits я столкнулся с следующей ошибкой.Ошибка списка SharePoint: «Значение не входит в ожидаемый диапазон»

"Value does not fall within the expected range" 

Все, что я делаю это:

item["URL"] 

Может кто-нибудь сказать мне, что я могу сделать по этому поводу?

+0

Какой язык вы используете? –

ответ

0

Обычно это означает, что «URL» не является полем в списке.

Если это продвинутый столбец InfoPath, попробуйте деактивировать и повторно активировать шаблон формы на сайт. Я заметил, что должен делать это каждый раз, когда добавляю новое продвинутое поле в шаблон infopath.

+0

Это в списке ... –

+0

Это может быть значение null для конкретного 'item'? – vapcguy

1

Чтобы получить URL-адрес SPListItem, используйте Item.Url.

+0

Не URL-адрес, который я ищу, я ищу URL-адрес столбца, который я создал. –

+0

Если это продвинутый столбец InfoPath, попробуйте отключить и повторно активировать шаблон формы на сайт. Я заметил, что должен делать это каждый раз, когда добавляю новое продвинутое поле в шаблон infopath. – Tundey

8

Ошибка определенно означает, что поле не может быть найдено.

Отладить процесс и посмотреть свойство ListItem.Fields.SchemaXML, чтобы найти его внутреннее имя, оно может быть сохранено как нечто иное, чем URL. Вы также можете использовать следующий метод для получения значения элемента списка.

SPField l_field = l_item.Fields.GetField("URL"); 
string l_fieldValue = l_item[l_field.Id].ToString(); 

GetField метод ищет поля как DisplayName & InternalName.

+0

Я рекомендую менеджер SharePoint для просмотра XML-схемы схемы и других интересных вещей в SharePoint. – Nat

+2

Два момента - не забудьте про перечисление SPBuiltInFieldId и убедитесь, что вы используете версию GetQuery для SPQuery, которая включает нужные вам поля в части запроса –

+1

Так почему же нельзя использовать sharepoint просто сказать «поле не найдено» или что-то в этом роде? возможно, это только я, но эти сообщения об ошибках разочаровывают. кажется, что они просто позволяют исключениям для своего кода пузыриться, а затем пусть программист догадывается ... – osiris

1
public static string GetItemURLValue(SPListItem item, string fieldName) 
    { 
     string exit = ""; 
     SPFieldUrlValue link = new SPFieldUrlValue(item[fieldName].ToString()); 
     exit = link.Url; 
     return exit; 
    } 
0

Существует специальный метод для извлечения URL-адресов. Попробуйте следующее:

SPListItem li = ... 
SPFieldUrlValue fuv = new SPFieldUrlValue(li[strFieldName].ToString()); 
return fuv.Url; 
+1

Извините, я вижу, что ryan опубликовал аналогичное решение. – strongopinions

0

Mine - это приложение для Windows. Я использовал это исключение после того, как создал созданный и опробовал развертывание.

Мое приложение необходимо написать в Excel, а затем сохранить его. Я использовал ссылку COM-компонента «Microsoft Excel 11.0 Object». Я заметил, когда я добавляю эту ссылку, фактически 3 dll появляются в моем списке ссылок.

  1. Microsoft.office.core
  2. Excel
  3. VBIDE

Я удалил ссылку 'VBIDE' и моя проблема решена.

0

Если это просто имя столбца и в «одной строки текста» формат, как насчет:

item["URL"] != null ? item["URL"].ToString() : "Not Found"; 
Смежные вопросы