SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Lookup-Spalte Werte zuweisen

Unbeantwortet Dieser Beitrag hat 6 Antworten

Ohne Rang
14 Beiträge
Christina erstellt 30 Sept. 2011 15:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich erstelle einen Webservice, der auf Sharepoint 2010 zugreift.

Unter Anderem habe ich eine Funktion, die mir die Custom-Spalten einer Document Library zurückgibt.
Für jede Spalte vergibt der Benutzer einen Wert, anschließend wird eine Datei hochgeladen und
die vom Benutzer eingebebenen Werte den Spalten zugewiesen.

Das funktioniert problemlos, bis auf Spalten vom Typ "Lookup".

Ich kann die Werte der Lookup-Spalte auslesen, aber ich schaffe es nicht, Werte für diese Spalte zu speichern.

 

So ermittle ich die Werte für die Lookup-Spalte. Ich lese alle Listenelemente aus und speichere den Wert, der zur Lookup-Spalte gehört:

XmlNode query = doc.CreateNode(XmlNodeType.Element, "Query", "");
XmlNode viewFields = doc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlNode queryOptions = doc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
query.InnerXml = "";
viewFields.InnerXml = "";

queryOptions.InnerXml = "";
XmlNode fieldItem = listService.GetListItems(listId, String.Empty, query, viewFields, String.Empty, queryOptions, null);

XmlNodeList lFields = RunXPathQuery(fieldItem.OuterXml, "//z:row");
string sSearch = "ows_" + showField;

XmlNode choicesRootNode = doc.CreateElement("Choices");
metadatenode.AppendChild(choicesRootNode);

foreach (XmlNode lookNode in lFields)
{
    if (lookNode.Attributes[sSearch] != null)
    {
        XmlNode cNode = doc.CreateElement("Choice");
        choicesRootNode.AppendChild(cNode);

        XmlNode cNameNode = doc.CreateElement("ChoiceName");
        cNameNode.InnerText = lookNode.Attributes[sSearch].Value.ToString();
        cNode.AppendChild(cNameNode);
    }
}

 

 

 

Beim Speichern durchlaufe ich alle Spalten und erzeuge für jede ein FieldInformation-Objekt:

SharepointCopy.FieldInformation fFieldInfo = new SharepointCopy.FieldInformation();

fFieldInfo.DisplayName = "...";
fFieldInfo.InternalName = "...";
fFieldInfo.Type = "...";
fFieldInfo.Value = "...";

 

Anschließend wird mit "CopyIntoItems" die Datei hochgeladen.

 

Hat jemand eine Idee, was ich falsch mache?

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Sept. 2011 16:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich nehme an, daß der Webservice den angezeigten Text des Lookups liefert. Zum Setzen des Werts brauchst Du aber die dahinterliegende ID.

Wie man das mit den Webservices umgehen könnte, kann ich Dir nicht sagen (außer im Lookup die ID auch als Anzeigetext zu verwenden), aber warum gehst Du überhaupt über die Webservices? Es gibt doch das Client-ObjectModel, mit dem das alles viel einfacher ist.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
14 Beiträge
Christina Als Antwort am 30 Sept. 2011 16:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das mit der ID habe ich vorhin versucht.

Über das Feld "ows_ID" lese ich die ID aus (ich gehe davon aus, dass das der richtige Wert ist).

 

Aber auch damit wird mir der Wert nicht angezeigt.

Folgende Varianten habe ich zum Setzen des Wertes probiert:

- ID;#Wert

- ID;#

- ID

 

Das will aber alles nicht funktionieren...

 

Das Projekt besteht aus mehreren Teilen. Der Großteil wurde mit Webservices programmiert, deswegen muss ich damit weitermachen.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 30 Sept. 2011 16:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Bist Du sicher, daß Du auch eine gültige ID verwendet hast, also eine, die es in der Nachschlageliste auch gibt?

Tut mir leid, aber dann habe ich keine weitere Idee dazu - Du hast ja offenbar alles probiert, was mir auf die Schnelle einfallen würde.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
14 Beiträge
Christina Als Antwort am 4 Okt. 2011 09:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine Antwort!

Ich habe mir zur Sicherheit die ID zur Lookupspalte anzeigen lassen.

Der Wert ist identisch mit dem, den ich zuvor ermittelt habe. Nach wie vor wird mir der Wert nicht angezeigt.

 

Hat vielleicht noch jemand eine Idee?

Ohne Rang
14 Beiträge
Christina Als Antwort am 4 Okt. 2011 11:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine Antwort!

Ich habe mir zur Sicherheit die ID zur Lookupspalte anzeigen lassen.

Der Wert ist identisch mit dem, den ich zuvor ermittelt habe. Nach wie vor wird mir der Wert nicht angezeigt.

 

Hat vielleicht noch jemand eine Idee?

Ohne Rang
14 Beiträge
Christina Als Antwort am 4 Okt. 2011 14:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Problem "gelöst".

Es hat nicht funktioniert, weil es gar nicht möglich ist...

http://stackoverflow.com/questions/1915188/cannot-update-lookup-field-when-uploading-document-using-copyintoitems