Sharepoint 如何将术语添加到TermCollection(分类字段)
在sharePoint 2010中,我想设置文档字段的分类值。该字段可以接受多个分类术语 我这样做是错误的,因为在Sharepoint 如何将术语添加到TermCollection(分类字段),sharepoint,taxonomy,term,Sharepoint,Taxonomy,Term,在sharePoint 2010中,我想设置文档字段的分类值。该字段可以接受多个分类术语 我这样做是错误的,因为在TermCollection类中对taxoTerms.Concat(terms)的强制转换失败: TaxonomyField taxoField = file.Item.Fields.GetFieldByInternalName(entry.Key) as TaxonomyField; TaxonomySession taxoSessi
TermCollection
类中对taxoTerms.Concat(terms)
的强制转换失败:
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);
}
TaxonomyField taxoField=file.Item.Fields.GetFieldByInternalName(entry.Key)
作为分类学领域;
TaxonomySession TaxonomySession=新的TaxonomySession(web.Site);
TermStore store=taxoSession.TermStores[taxoField.SspId];
TermSet TermSet=store.GetTermSet(taxoField.TermSetId);
if(taxoField.AllowMultipleValues)
{
字符串[]taxoValues=entry.Value.Split(“;”);
TermCollection taxoTerms=termSet.GetTerms(taxoValues[0],true);
对于(int j=1;j0)
{
taxoTerms=(术语集合)taxoTerms.Concat(术语);
}
}
taxoField.SetFieldValue(file.Item,taxoTerms);
}
您知道如何将术语添加到我的TermCollection
对象中,以便将术语值保存在字段中吗
谢谢。以下是一个可能有效的示例:
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,然后才能将其保存到项目中
嗯
瞧,我找到了解决办法。这是:
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);
}
TaxonomyField-taxoField=
file.Item.Fields.GetFieldByInternalName(entry.Key)作为TaxonomyField;
TaxonomySession TaxonomySession=新的TaxonomySession(web.Site);
TermStore store=taxoSession.TermStores[taxoField.SspId];
TermSet TermSet=store.GetTermSet(taxoField.TermSetId);
if(taxoField.AllowMultipleValues)
{
字符串[]taxoValues=entry.Value.Split(“;”);
TermCollection terms=termSet.GetAllTerms();
List taxonomyValueList=taxoValues.ToList();
TaxonomyFieldValueCollection fieldValues=新的TaxonomyFieldValueCollection(TaxOfeld);
foreach(术语中的术语)
{
if(taxonomyValueList.Contains(term.Name))
{
TaxonomyFieldValue fieldValue=新的TaxonomyFieldValue(TaxOfeld);
fieldValue.TermGuid=term.Id.ToString();
fieldValue.Label=term.Name;
fieldValue.Add(fieldValue);
}
}
taxoField.SetFieldValue(file.Item,fieldvalue);
}
希望它能帮助其他人。谢谢你的建议。我增加了另一种方法来做这项工作。