2009-03-02 9 views

Odpowiedz

0

Zazwyczaj oznacza to, że "URL" nie jest polem na liście.

Jeśli jest to promowana kolumna programu InfoPath, spróbuj dezaktywować i ponownie aktywować szablon formularza na stronie. Zauważyłem, że muszę to robić za każdym razem, gdy dodaję nowe promowane pole do szablonu infopath.

+0

Jest na liście ... –

+0

Może być pusta na konkretnym "przedmiocie"? – vapcguy

1

Aby uzyskać adres URL pliku SPListItem, użyj Item.Url.

+0

Nie szukam adresu URL, szukam adresu URL kolumny, który utworzyłem. –

+0

Jeśli jest to promowana kolumna programu InfoPath, spróbuj dezaktywować i ponownie aktywować szablon formularza na stronie. Zauważyłem, że muszę to robić za każdym razem, gdy dodaję nowe promowane pole do szablonu infopath. – Tundey

8

Błąd z pewnością oznacza, że ​​nie można znaleźć pola.

Wykonaj debugowanie procesu i spójrz na właściwość ListItem.Fields.SchemaXML, aby znaleźć jego wewnętrzną nazwę, może być zapisana wewnętrznie jako coś innego niż URL. Możesz również użyć poniższej metody, aby uzyskać wartość pozycji na liście.

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

Sposób GetField wygląda na polu zarówno DisplayName & InternalName.

+0

Polecam menedżer SharePoint do przeglądania schematu xml i innych zabawnych rzeczy w SharePoint – Nat

+2

Dwa punkty - nie zapominaj o wyliczaniu SPBuiltInFieldId i upewnij się, że używasz wersji GetQtem, która zawiera wymagane pola w części część zapytania –

+1

Dlaczego więc sharepoint nie może powiedzieć "field not found" lub coś podobnego? może to tylko ja, ale te komunikaty o błędach są frustrujące. wydaje się, że po prostu pozwalają wyjątkom na ich kod, a potem pozwalają programistce zgadywać ... – 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

Istnieje specjalna metoda pobierania adresów URL. Wypróbuj to:

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

Przepraszam, widzę, że Ryan opublikował podobne rozwiązanie. – strongopinions

0

Kopalnia jest aplikacją systemu Windows. Kiedyś otrzymałem ten wyjątek po utworzeniu konfiguracji i wypróbowaniu wdrożenia.

Moja aplikacja musiała pisać w Excelu, a następnie zapisać. Użyłem odniesienia do składnika COM "Microsoft Excel 11.0 Object". Zauważyłem, kiedy dodaję ten odnośnik faktycznie 3 dll pojawiają się na mojej liście referencyjnej.

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

usunąłem odniesienie 'VBIDE' i mój problem został rozwiązany.

0

Jeśli to tylko nazwa kolumny w „pojedynczy wiersz tekstu” format, a co:

item["URL"] != null ? item["URL"].ToString() : "Not Found";