我对SharePoint很新,使用2010.试着看看我们可以用它来做什么,尤其是列表。我有一种感觉,我错过了一些非常明显的东西,但找不到它......
在Sharepoint网站上,我创建了一个名为Famous People的列表:添加了一些人,Frank Sinatra等。
那么我一直在尝试将这些信息放到一个简单的C#控制台应用程序中,引用并尝试我发现的许多示例。 但是我一直在努力弄清楚我需要引用的实际fieldNames(?)是什么,因为它看起来并不是强类型的。但是,使用“电子邮件地址”之类似乎也不起作用
这是我一直在尝试的一个例子。 (来自:How to: Retrieve List Items)
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
我已尝试过上面提供的示例链接中的每个方法。但从那里我不知道如何到达其他属性,如“工作”或“电子邮件地址” 或者,例如,如果我正在处理我不知道的List,如何通过Web服务从我的应用程序中找到有效的字段名称?
感谢。
答案 0 :(得分:2)
需要注意的是,每个SPListItem都有一组不同的字段,具体取决于底层内容类型。 这也会根据项目所在的列表进行修改。 所以这就是为什么字段中没有强类型索引...
但是,添加以下代码可以帮助您了解每个listitem中的内容
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]);
}
答案 1 :(得分:0)
如果转到列表设置,可以通过单击找到列名称。这会将您发送到以下链接: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();
答案 2 :(得分:0)
您可以通过indexed property上的ListItem
访问其他媒体资源。
您必须将属性ViewFields
添加到ViewXml
:
var camlQuery = new CamlQuery
{
ViewXml = "<View><ViewFields><FieldRef Name='Last_x0020_Name'/></ViewFields><RowLimit>100</RowLimit></View>"
};
请注意空格的_x0020_
编码。