您的位置:首页 > 编程语言

如何通过代码向 User 类型的字段里面添加 多个用户

2012-06-04 21:13 656 查看
需求:要通过一个User字段,记录修改列表的人员信息,通过事件处理器

程序实现:

在添加事件里面添加代码:记录创建人的信息

/// <summary>
/// 已添加项.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem item = properties.ListItem;
SPFieldUserValueCollection fuvc = new SPFieldUserValueCollection();
SPUser user = properties.Web.EnsureUser(properties.UserLoginName);
fuvc.Add(new SPFieldUserValue(properties.Web, user.ID, user.Name));
item["UserType"] = fuvc;
item.Update();
}

在修改事件里添加代码:记录修改人的信息,这里要添加一个判断,如果字段里面已经存在该用户,则不用再次添加用户信息

/// <summary>
/// 已更新项
/// </summary>
public override void ItemUpdated(SPItemEventProperties properties)
{
bool isTure = true;
SPListItem listItem = properties.ListItem;
SPUser user = properties.Web.EnsureUser(properties.UserLoginName);
SPFieldUserValueCollection fieldUserValueCollection = listItem["UserType"] as SPFieldUserValueCollection;
foreach (SPFieldUserValue userValue in fieldUserValueCollection)
{
if (userValue != null)
{
if (userValue.LookupId == user.ID) //判断用户是否存在
{
isTure = false;
break;
}
}
}

if (isTure)
{
fieldUserValueCollection.Add(new SPFieldUserValue(properties.Web, user.ID, user.LoginName));
listItem["UserType"] = fieldUserValueCollection;
listItem.Update();
}
}

备注:第一次写程序的时候,把代码放到Adding事件里面总是出错,在小林的帮助下解决了问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐