首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从术语商店SharePoint联机检索多值分类法字段

如何从术语商店SharePoint联机检索多值分类法字段
EN

Stack Overflow用户
提问于 2016-09-26 13:56:31
回答 1查看 4.5K关注 0票数 0

我正在尝试使用JavaScript从术语存储中检索术语,它只是对以下代码很好:获取单个分类法字段的标签:

代码语言:javascript
运行
复制
var fieldValue = item.get_item("FieldName");
var fieldLabel = fieldValue.Label;

我有一个问题要检索多值分类法字段的标签?我试过了

代码语言:javascript
运行
复制
var fieldValue = item.get_item("FieldName");
var taxEnumerator = fieldValue.getEnumerator();
while(taxEnumerator.moveNext()){
    var currentTerm = taxEnumerator.get_current();
    var label = currentTerm.Label;
    // do something with the label here
}

但这不管用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-05 08:33:14

很可能是因为没有加载sp.taxonomy.js库,并且在这种情况下,分类法字段值被返回为“轻量级”对象(而不是SP.Taxonomy.TaxonomyFieldValueCollection对象类型的),所以很可能会出现此错误。

sp.taxonomy选项1(建议):使用获取多个分类法字段值

首先,我建议采用这种方法,因为SP.Taxonomy命名空间不仅提供了处理分类法字段值的标准方法,而且还提供了通过JSOM处理托管元数据API的方法。

下面的示例演示如何:

示例:

代码语言:javascript
运行
复制
SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));   
SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function () { 

var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);

ctx.executeQueryAsync(
   function(){

      var fieldVal = item.get_item(fieldName); 

      for(var i = 0; i < fieldVal.get_count(); i++) {
         var label = fieldVal.get_item(i).get_label();
         var guid = fieldVal.get_item(i).get_termGuid();
         //...
      }       
   },
   function(sender,args){
       console.log(args.get_message());
   });


});

sp.taxonomy.js选项2:获得多个分类法字段值而没有加载库的

sp.taxonomy库未加载而非时,仍然可以通过_Child_Items_属性检索分类法字段值,如下所示:

代码语言:javascript
运行
复制
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);

ctx.executeQueryAsync(
   function(){

      var fieldVal = item.get_item(fieldName)._Child_Items_; 
      for(var i = 0; i < fieldVal.length; i++) {
         var label = fieldVal[i].Label;
         var guid = fieldVal[i].TermGuid;
         //...
      }       
   },
   function(sender,args){
       console.log(args.get_message());
   });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39704871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档