我有一个包含用户名称的列。列类型是单行文本,用户名以LastName,FirstName;
格式存储我想获取存储的用户名的用户ID和电子邮件地址。
我试过
string fieldValue = item["ProjectManager"] as string;
SPFieldUserValueCollection users = new SPFieldUserValueCollection(item.Web, fieldValue);
if (users != null)
{
/* The users.count is always zero */
foreach (SPFieldUserValue user in users)
{
if (user.User != null)
{
}
}
}
我无法将列类型更改为Person或Group,它将保留为单行文本。请让我知道如何实现这一目标。我现在已经尝试了几个小时了。
答案 0 :(得分:1)
试试这个:
public SPUser GetUser(SPWeb web, string userstring)
{
var user = FetchUser(web, userstring);
if (user == null)
{
SPPrincipalInfo info = SPUtility.ResolvePrincipal(web, userstring, SPPrincipalType.User, SPPrincipalSource.All, null, false);
if (info!=null)
user = FetchUser(web, info.LoginName);
}
return user;
}
public SPUser FetchUser(SPWeb web, string userstring)
{
return web.AllUsers.Cast<SPUser>().FirstOrDefault(
i => i.Name == userstring || i.LoginName == userstring || i.Email == userstring);
}
从SPUser获取用户ID。
通过以下方式获取SPUser:
var user = GetUser(item.Web,fieldValue )