如何通过代码向 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事件里面总是出错,在小林的帮助下解决了问题
程序实现:
在添加事件里面添加代码:记录创建人的信息
/// <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事件里面总是出错,在小林的帮助下解决了问题
相关文章推荐
- Access中如何用代码建立小数decimal(18,2)类型的字段
- play Framework如何通过实体.find查询Date类型字段
- 如何在C#代码中实现在Sqlserver2000中添加用户?以及附加数据库?
- 如何在Android应用里对HTTP请求头部添加适当的User-Agent字段
- curl通过openfire的User Service插件添加用户
- c++ linux 如何把 char* 里面的中文 insert进入mysql(相应的字段为varchar类型)
- DataGridView如何通过代码来添加Combox列(代码中而非设计中)
- 如何理解Python的web框架tornado文档里面的用户认证的self.current_user?
- SAP 通过事务代码与屏幕变式(SHD0)控制控制用户界面的某些字段,以控制生产订单的调度类型为例
- QuickCSharp框架开发(20)------授权部分的代码以及如何使用授权 添加用户、角色与分配资源部分的代码暂且省略
- 数据表中有字段time(类型为varchar),如何通过sql语句找出这个字段里力离当前最近的一个日期
- java的UUID类型字段,如何通过jdbc进行数据库的CRUD
- php通过http_user_agent判断用户设备类型(脑残版)
- SAP 通过事务代码与屏幕变式(SHD0)控制控制用户界面的某些字段,以控制生产订单的调度类型为例
- 如何给屏幕字段(下拉框和输入框)用代码添加F4 search help
- 如何查找事务代码所在程序的用户出口(user-exit)
- 如何查找事务代码所在程序的用户出口(user-exit)
- hibernate如何对Blob类型字段进行数据添加
- 如何通过后台代码获取map类型如下所示的数据:
- 如何在Android应用里对HTTP请求头部添加适当的User-Agent字段