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.




Taxonomiefeld Wert mit C# setzen

Geprüfte Antwort Dieser Beitrag hat 5 Antworten

Ohne Rang
77 Beiträge
HuLa erstellt 24 Sept. 2012 10:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo

Ich versuche grad mit C# einem Taxonomiefeld einer Liste einen Wert zuzuweisen (C#). Nur leider bekomme ich immer wieder die Fehlermeldung, dass die GUID im Terminologiespeicher nicht vorhanden sei. Unter /Lists/TaxonomyHiddenList/allItems.aspx sind die entsprechenden Terms allerdingvorhanden und die IDs stimmen auch.

Hier mal mein bissheriger Code:

TaxonomyField field = (TaxonomyField)listBooks.Fields["TermField"];
TaxonomySession session = new TaxonomySession(SPContext.Current.Site);
TermStore store = session.DefaultSiteCollectionTermStore;
foreach (Group gr in store.Groups)
{
  if (gr.Name == "GROUP1")
  {
    TermSet termSet = gr.TermSets["TermSet1"];
    TermCollection tc = termSet.Terms;
    foreach (Term term in tc)
    {
      if (term.Name == "Term1")
      {
        Guid ids = term.Id;
        Term oTerm = session.GetTerm(ids);
        field.SetFieldValue(oItem, oTerm);
        break;
      }
    }
    break;
  }
}

Kann mir dabei jemand helfen?

HuLa

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Sept. 2012 11:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du mußt einen neuen TaxonomyFieldValue erzeugen, dem die ID und den TermName zuweisen und dann bei SetFieldValue diesen TaxonomyFieldValue verwenden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
77 Beiträge
HuLa Als Antwort am 24 Sept. 2012 12:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Erstmal danke, für Deine Antowrt.

Aber auch dann bekomme ich die gleiche Fehlermeldung.

TaxonomyField field = (TaxonomyField)listBooks.Fields["TermField"];
                TaxonomySession session = new TaxonomySession(SPContext.Current.Site);
                TermStore store = session.DefaultSiteCollectionTermStore;
                foreach (Group gr in store.Groups)
                {
                    if (gr.Name == "GROUP1")
                    {
                        TermSet termSet = gr.TermSets["TermSet1"];
                        TermCollection tc = termSet.Terms;
                        foreach (Term term in tc)
                        {
                            if (term.Name == "Term1")
                            {
                                TaxonomyFieldValue oTermValue = new TaxonomyFieldValue(field);
                                oTermValue.TermGuid = term.Id.ToString();
                                oTermValue.Label = term.Name;
                                field.SetFieldValue(oItem, oTermValue);
                                break;
                            }
                        }
                        break;
                    }
                }

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

So sollte es funktionieren. Kann es sein, daß der Benutzer, unter dem das läuft, nicht die notwendigen Rechte hat?

Übrigens: statt per Schleife alles durchzugehen, kannst Du auch direkt auf die gewünschten Elemente zugreifen.
Z.B. Group group = store.Groups["Group1"];

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
77 Beiträge
HuLa Als Antwort am 24 Sept. 2012 12:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Welche Rechte muss der Nutzer denn haben?

Wenn ich direkt in die Liste gehe und ein Element bearbeite, kann ich den Wert dieses Feldes ohne Probleme ändern. Alle anderen Nutzer auch. Dann sollte das doch auch über das Webpart gehen... Oder hab ich etwas übersehen?

Ohne Rang
77 Beiträge
HuLa Als Antwort am 24 Sept. 2012 13:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist mir jetzt ein wenig peinlich... :-/

Der Ansatz von Andi hatte das Problem bereits gelöst. Mein Fehler trat letztendlich an einer ganz anderen Stelle auf.

Danke Andi für Deine Unterstützung.

HuLa