2

sharePoint 2010で、ドキュメントフィールドの分類値を設定したいと思います。このフィールドは、複数の分類用語を使用できます。

クラスtaxoTerms.Concat(terms)内のキャストが失敗するため、私はそれを間違った方法で行っています:TermCollection

    TaxonomyField taxoField = file.Item.Fields.GetFieldByInternalName(entry.Key) 
              as TaxonomyField;

    TaxonomySession taxoSession = new TaxonomySession(web.Site);

    TermStore store = taxoSession.TermStores[taxoField.SspId];

    TermSet termSet = store.GetTermSet(taxoField.TermSetId);

    if (taxoField.AllowMultipleValues)
    {   
        string[] taxoValues = entry.Value.Split(';');

        TermCollection taxoTerms = termSet.GetTerms(taxoValues[0], true);

        for (int j = 1; j < taxoValues.Length; j++)
        {
            TermCollection terms = termSet.GetTerms(taxoValues[j], true);

            if (terms.Count > 0)
            {
                taxoTerms = (TermCollection)taxoTerms.Concat(terms);
            }
        }

        taxoField.SetFieldValue(file.Item, taxoTerms); 
    }

TermCollectionオブジェクトに用語を追加して、フィールドに用語の値を保存する方法を知っていますか?

ありがとうございました。

4

2 に答える 2

2

私は自分の解決策を見つけました。ここにあります :

TaxonomyField taxoField =
    file.Item.Fields.GetFieldByInternalName(entry.Key) as TaxonomyField;

TaxonomySession taxoSession = new TaxonomySession(web.Site);

TermStore store = taxoSession.TermStores[taxoField.SspId];

TermSet termSet = store.GetTermSet(taxoField.TermSetId);

if (taxoField.AllowMultipleValues)
{   
    string[] taxoValues = entry.Value.Split(';');

    TermCollection terms = termSet.GetAllTerms();

    List<string> taxonomyValueList = taxoValues.ToList<string>();

    TaxonomyFieldValueCollection fieldValues = new TaxonomyFieldValueCollection(taxoField);

    foreach (Term term in terms)
    {
        if (taxonomyValueList.Contains(term.Name))
        {
            TaxonomyFieldValue fieldValue = new TaxonomyFieldValue(taxoField);

            fieldValue.TermGuid = term.Id.ToString();
            fieldValue.Label = term.Name;
            fieldValues.Add(fieldValue);
        }
    }

    taxoField.SetFieldValue(file.Item, fieldValues);
} 

それが他の人に役立つことを願っています。

于 2011-12-01T10:34:15.903 に答える
1

動作する可能性のあるサンプルを次に示します。

var item = file.Item;
var taxonomyField = item.Fields.GetFieldByInternalName(entry.Key);
var values = new TaxonomyFieldValueCollection(taxonomyField);
values.PopulateFromLabelGuidPairs(entry.Value);
item[entry.Key] = values;
item.Update();

私はライフシステムでそれをテストしなかったので、いくつかの追加の作業があるかもしれませんが、あなたが一般的な考えを理解することを願っています。entry.Value文字列の値には、|が含まれている必要があります。と ; タグの分離されたリスト。タグが存在しない場合は、アイテムに保存する前に、タグを作成してIDを取得する必要があります。

HTH Vojta

于 2011-11-30T18:13:26.227 に答える