2014-01-21 110 views
1

我有一列有用戶名稱。列類型是單行文本,用戶名以格式LastName,FirstName存儲;獲取用戶ID - SharePoint 2010

我想獲取存儲的用戶名的用戶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) 
     { 
     } 
     } 
    } 

我不能列類型更改爲個人或羣組,它將繼續作爲單行文本。請讓我知道我該怎麼做到這一點。我現在一直在嘗試這個幾個小時。

回答

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) 
+0

謝謝您的答覆路易斯。我得到的錯誤SPUserCollection不包含Cast for線路的定義返回web.AllUsers.Cast ().FirstOrDefault – Janet

+0

您需要在頂部包含Linq名稱空間: – Luis

+0

使用System.Linq; – Luis

相關問題