在SharePoint 2010客户端API中获取listItem的字段名(强类型?)
本文关键字:字段 强类型 listItem 2010 SharePoint 客户端 API 获取 | 更新日期: 2023-09-27 18:10:39
我是SharePoint的新手,用的是2010。试着看看我们能用它做些什么,尤其是用列表。我有一种感觉,我错过了一些很明显的东西,但找不到.....
在一个Sharepoint网站上,我创建了一个名为"名人"的列表:添加了一些人,如Frank Sinatra等。
- 姓氏:Sinatra
- 名字:Frank
- email地址:frank.sinatra@ratpack.com
- 职位:歌手 等
所以,我一直试图得到这些信息到一个简单的c#控制台应用程序,参考和尝试许多例子,我发现。但是我在计算我需要引用的实际fieldNames(?)是什么时遇到了困难,因为它似乎不是强类型的。但是,使用"电子邮件地址"之类的字符似乎也不起作用
这是我一直在尝试的一个例子。(选自:如何:检索列表项)
string siteUrl = "http://servername/site/";
var clientCtx = new ClientContext(siteUrl);
Microsoft.SharePoint.Client.List oList = clientCtx.Web.Lists.GetByTitle("Famous People");
var camlQuery = new CamlQuery {ViewXml = "<View><RowLimit>100</RowLimit></View>"};
ListItemCollection collListItem = oList.GetItems(camlQuery);
clientCtx.Load(collListItem,
items => items.Include(
item => item.Id,
item => item.DisplayName,
item => item.HasUniqueRoleAssignments));
clientCtx.ExecuteQuery();
foreach (ListItem oListItem in collListItem)
{
Console.WriteLine("ID: {0} 'nDisplay name: {1} 'nUnique role assignments: {2}",
oListItem.Id, oListItem.DisplayName, oListItem.HasUniqueRoleAssignments);
}
Console.ReadLine();
clientCtx.Dispose();
又回到了
ID: 1
Display name: Clough
Unique role assignments: False
ID: 2
Display name: Sinatra
Unique role assignments: False
ID: 3
Display name: Simpson
Unique role assignments: False
ID: 4
Display name: Skywalker
Unique role assignments: False
我已经尝试了上面提供的示例链接中的每种方法。但从那里我不知道如何获得其他属性,如"工作",或"电子邮件地址"。
或者,如果我正在处理一个我不知道的列表,我如何通过web服务从我的应用程序中找到有效的字段名称?
谢谢。
需要注意的是,每个SPListItem都有一组不同的字段,这取决于底层内容类型。这也会根据项目所在的列表进行修改。这就是为什么没有强类型索引到字段…
但是,添加以下代码应该可以帮助您了解每个列表项
中的内容 foreach(SPField field in oListItem.Fields)
{
Console.Write(field.Title + " (" + field.InternalName + "): ");
Console.WriteLine(oListItem[field.Id].ToString());
}
属性SPField。SchemaXml显示了每个字段配置的完整细节。有一个SharePointManager的副本会让你很好地了解任何给定的网站是如何连接在一起的。
如果你只能使用客户端对象模型来发现这个
foreach(string fieldName in oListItem.FieldValues.Keys)
{
Console.Write(fieldName);
Console.WriteLine(oListItem.FieldValues[fieldName]);
}
您可以通过ListItem
上的索引属性访问其他属性。
您必须将属性作为ViewFields
添加到ViewXml
:
var camlQuery = new CamlQuery
{
ViewXml = "<View><ViewFields><FieldRef Name='Last_x0020_Name'/></ViewFields><RowLimit>100</RowLimit></View>"
};
注意空格的_x0020_
编码
如果您转到您的列表设置,您可以通过单击它找到列名。这会将您发送到一个链接,如:http://servername/_layouts/FldEdit.aspx?List=%7BEACD90E2%2DED64%2D42EE%2DB1FB%2D2631687C545F%7D&Field=Title
字段的名称是field =Title的RHS。如果知道列名,可以使用以下代码:
cxt.Load(items,
c => c.Include(
item => item["ID"],
item => item["Title"],
item => item["AssignedTo"],
item => item["Status"]));
cxt.ExecuteQuery();