2015-12-10 38 views
1
适当的名称值

我用下面的代码获取SharePoint列表中的用户:获取,而不是Microsoft.SharePoint.Client.FieldUserValue

private ClientContext clientContext = new ClientContext(siteUrl); 
private SP.List oList = clientContext.Web.Lists.GetByTitle("SharePoint List"); 
private CamlQuery camlQuery = new CamlQuery(); 
private ListItemCollection collListItem = oList.GetItems(camlQuery); 
private ArrayList names = new ArrayList(); 
clientContext.Load(collListItem, items => items.Include(
     item => item["UserNames"])); 
clientContext.ExecuteQuery(); 

foreach (ListItem oListItem in collListItem) 
     { 
      titles.Add(oListItem["UserNames"]); 
     } 

我从另一列检索数据,也和我得到这些数据就好了。但是当涉及到名称时,返回值是Microsoft.SharePoint.Client.FieldUserValue

有关如何获取实际用户名的建议?

+1

当您使用调试器...你穿上 'titles.Add(oListItem [“用户名”])断点;'快表内,看看有什么属性,你可以在'oListItem [“UserNames”]中可能有另一个索引位置,如果是的话,那么你应该做一个for循环,但不知道数据结构是不是真的可以分辨 – MethodMan

回答

5

它应该返回FieldUserValue,您可以从对象中获取用户名或ID。这里有一个简单的例子:

FieldUserValue user = (FieldUserValue)listItem["Author"]; 
string name = user.LookupValue; 
+0

Lookups,Taxonomy(Managed Metadata)and People Pickers all require在CSOM中投射以获得正确的值。很高兴这有助于! –