当前位置:  开发笔记 > 程序员 > 正文

如何最好地将SharePoint多用户字段字符串转换为SPUsers数组?

如何解决《如何最好地将SharePoint多用户字段字符串转换为SPUsers数组?》经验,为你挑选了1个好方法。

我正在为SharePoint列表编写ItemAdding处理程序,该列表包含多用户字段.由于此时SPItem实际上不可用,我认为我已经降级为使用从SPItemEventDataCollection返回的字符串.当user1,user2和user3存在时,该字符串将如下所示:

1; #MYDOMAIN\USER1;#4; #MYDOMAIN\USER2;#10; #MYDOMAIN \用户3

我想将其转换为SPUser对象数组,以便将其传递给另一个现有方法.是否有任何SharePoint内置方法来处理这些字符串,还是我降级为解析此字符串?

此外,假设我需要处理此字符串,它看起来像这里的整数标记始终对应于后面的域\用户名.是否有任何情况,这将不是真的,整数或域\用户名丢失或不正确?使用数字并使用SPWeb的SiteUsers.GetByID(id)方法是否安全?在一些测试中,我无法让它失败,但是如果数字和字符串数据完全是冗余的,那么它们似乎很奇怪.

谢谢!



1> dahlbyk..:

SPFieldUserValueCollection完全符合您的要求.它的构造函数接受SPWeb和用户字符串.集合中的SPFieldUserValue项提供User属性,该属性返回Web的相应SPUser对象.

private void ProcessUsers(SPListItem item, string fieldName)
{
  string fieldValue = item[fieldName] as string;
  SPFieldUserValueCollection users = new SPFieldUserValueCollection(item.Web, fieldValue);

  foreach(SPFieldUserValue uv in users)
  {
    SPUser user = uv.User;
    // Process user
  }
}

SPFieldUser类型从标准SPFieldLookup继承其行为,该标准SPFieldLookup还存储ID和Title,并具有相应的SPFieldLookupValueCollection.ID支持(弱)参照完整性,而缓存的值允许快速查询.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有