【问题标题】:The proper way to write a SharePoint User to a User Field in a SharePoint list将 SharePoint 用户写入 SharePoint 列表中的用户字段的正确方法
【发布时间】:2019-08-07 21:21:27
【问题描述】:

我正在将用户写入 SharePoint 列表。

我读到 SharePoint 用户字段里面有一个这样的字符串: userId;#userLoginName

在写入用户字段时,我尝试以相同的方式进行格式化,例如,当我编写此字符串时,它可以工作: 9;#i:0#.f|membership|ectropy@example.org

但奇怪的是(至少对我而言)9;# 似乎有效,甚至 9。即使我根本没有传递userLoginName 信息,loginId 似乎也足以让它识别出我正在谈论的用户。

这似乎意味着在写入 SharePoint 用户字段时,您只需要 id 和 userLoginName,或者实际上,loginId 之后的所有内容都无关紧要。

我在这里的推理是否正确?或者,如果我省略了 userLoginName 信息,可能会产生意想不到的后果?

【问题讨论】:

    标签: sharepoint sharepoint-2013 sharepoint-list csom sharepoint-online


    【解决方案1】:

    您的假设是正确的,在为用户字段指定值时,只有用户 ID 是强制性属性。

    但由于SP.FieldUserValue object用于存储用户字段的值,因此建议使用此对象获取和设置值,如下例所示:

    var ctx = SP.ClientContext.get_current();
    var web = ctx.get_web();
    var lists = web.get_lists();
    var list = lists.getByTitle(listTitle);
    var item = list.getItemById(itemId);
    
    var assignedToVal = new SP.FieldUserValue();
    assignedToVal.set_lookupId(11);   //specify User Id 
    item.set_item(fieldName,assignedToVal);
    item.update();
    
    ctx.executeQueryAsync(
        function() {
            console.log('Updated');
        },
        function(sender,args) {
            console.log('An error occurred:' + args.get_message());
        }
    );
    

    【讨论】:

    • 好吧,完美,所以与其只做newItem.set_item('Manager', "9");(这是我当前代码的工作方式),不如做var assignedToVal = new SP.FieldUserValue(); assignedToVal.set_lookupId(9); item.set_item(fieldName,assignedToVal);,如果我遵循正确的话。
    • 如果用户属于 SP.FieldUserValue 类型,则 user.get_id() 返回 UserId
    • 别忘了加载 sp.js SP.SOD.executeFunc('sp.js', 'SP.ClientContext', loadSPContext);
    【解决方案2】:

    我在这里使用人名找到答案,而不是 id 比查找用户 id 更容易 如果你没有。

    https://gist.github.com/rheid/18635032d8371c7825b3320eae57071f

    // Single Person  
       var singleUser = SP.FieldUserValue.fromUser('Peter Dotsenko');  
       oListItem.set_item('PetkaPersonSingle', singleUser);  
    
       //Multi Person  
       var petkaUserMultiArray = new Array("peterd@domain.com","Peter Dotsenko","domain\\peterd");  
       var lookups = [];  
       for (var ii in petkaUserMultiArray) {  
          var lookupValue = SP.FieldUserValue.fromUser(petkaUserMultiArray[ii]);  
          lookups.push(lookupValue);  
       }  
       oListItem.set_item('PetkaPersonMulti', lookups);
    //
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多