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

需求:要通过一个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事件里面总是出错,在小林的帮助下解决了问题

 

posted @ 2012-06-04 21:13  @@@一统@@@  阅读(520)  评论(0编辑  收藏  举报