2009-03-02 3 views
8

Hallo, ich entwickle mit dem SharePoint-Namespace und ich lief in den folgenden Fehler, wenn ich versuche, eine URL-Spalte von einem meiner Lsits abrufen.SharePoint-Listenfehler: "Wert fällt nicht in den erwarteten Bereich"

"Value does not fall within the expected range" 

Alles, was ich tue, ist:

item["URL"] 

Kann mir jemand sagen, was ich dagegen tun?

+0

Welche Sprache verwenden Sie? –

Antwort

0

Dies bedeutet normalerweise "URL" ist kein Feld in der Liste.

Wenn es sich um eine hochgestufte InfoPath-Spalte handelt, versuchen Sie, die Formularvorlage für die Site zu deaktivieren und erneut zu aktivieren. Ich habe bemerkt, dass ich dies tun muss, wenn ich ein neues promattered-Feld zu einer Infopath-Vorlage hinzufüge.

+0

Es ist in der Liste ... –

+0

Es könnte Null auf dem bestimmten 'item' sein? – vapcguy

1

Um die URL eines SPListItem zu erhalten, verwenden Sie Item.Url.

+0

Nicht die URL, nach der ich suche, ich suche nach einer Spalten-URL, die ich erstellt habe. –

+0

Wenn es sich um eine hochgestufte InfoPath-Spalte handelt, versuchen Sie, die Formularvorlage für die Site zu deaktivieren und erneut zu aktivieren. Ich habe bemerkt, dass ich dies tun muss, wenn ich ein neues promattered-Feld zu einer Infopath-Vorlage hinzufüge. – Tundey

8

Der Fehler bedeutet definitiv, dass das Feld nicht gefunden werden kann.

Debuggen Sie den Prozess und schauen Sie sich die ListItem.Fields.SchemaXML Eigenschaft an, um ihren internen Namen zu finden, sie kann intern als etwas anderes als URL gespeichert werden. Sie können auch die folgende Methode verwenden, um einen Listenelementwert abzurufen.

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

Die GetField Methode sieht für ein Feld von beiden Display & InternalName.

+0

Ich empfehle SharePoint-Manager für das Schema XML und andere lustige Sachen in SharePoint – Nat

+2

Zwei Punkte - vergessen Sie nicht über die SPBuiltInFieldId Enumeration, und stellen Sie sicher, wenn Sie die SPQuery-Version von GetItems verwenden, dass Sie die gewünschten Felder enthalten in der Teil der Abfrage –

+1

Warum kann Sharepoint nicht einfach sagen "Feld nicht gefunden" oder so ähnlich? Vielleicht ist es nur ich, aber diese Fehlermeldungen sind frustrierend. es scheint, dass sie nur die Ausnahmen für ihren Code aufblähen lassen und dann den Programmierer raten lassen ... – 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

Es gibt eine spezielle Methode zum Abrufen von URLs. Versuchen Sie dies:

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

Sorry, ich sehe, dass Ryan eine ähnliche Lösung gepostet hat. – strongopinions

0

Mine ist eine Windows-Anwendung. Ich habe diese Ausnahme erhalten, nachdem ich das Setup erstellt und die Bereitstellung versucht habe.

Meine Anwendung musste in Excel schreiben und dann speichern. Ich habe Referenz der COM-Komponente 'Microsoft Excel 11.0 Object' verwendet. Mir ist aufgefallen, dass wenn ich diesen Verweis hinzufüge, tatsächlich 3 DLLs in meiner Referenzliste erscheinen.

  1. Microsoft.Office.Core
  2. Excel
  3. VBIDE

Ich entfernte die Referenz 'VBIDE' und mein Problem gelöst ist.

0

Wenn es nur ein Spaltenname und in „Textzeile“ -Format, was ist:

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