如何从C#程序中迭代SharePoint列表和子站点?是否需要来自SharePoint安装的SharePoint.dll
,或者是否有可用于远程访问该数据的“Sharepoint客户端”DLL?
答案 0 :(得分:6)
使用Sharepoint网络服务;特别是网站和列表webservices做你所要求的。
对于Sharepoint 2007: http://msdn.microsoft.com/en-us/library/bb862916(v=office.12).aspx
答案 1 :(得分:1)
对于Sharepoint 2007,您需要访问Web服务。在Sharepoint 2010中,有一个sharepoint客户端对象模型。
http://msdn.microsoft.com/en-us/library/ee857094%28office.14%29.aspx
答案 2 :(得分:0)
我碰巧正在处理这件事......这很有效。我把代码简化了一下,专注于机制。边缘粗糙,但希望你能得到这个想法。它对我有用。
此外,请务必使用您的Sharepoint网站的网址设置网络参考。将其用作下面的“网络参考”。
private <web reference> _Service;
private String _ListGuid, _ViewGuid;
private Initialize()
{
_Service = new <web reference>.Lists();
_Service.Credentials = System.Net.CredentialCache.DefaultCredentials;
_Service.Url = "https://sharepointsite/_vti_bin/lists.asmx";
}
private String SpFieldName(String FieldName, Boolean Prefix)
{
return String.Format("{0}{1}", Prefix ? "ows_" : null,
FieldName.Replace(" ", "_x0020_"));
}
private String GetFieldValue(XmlAttributeCollection AttributesList,
String AttributeName)
{
AttributeName = SpFieldName(AttributeName, true);
return AttributesList[AttributeName] == null ?
null : return AttributesList[AttributeName].Value;
}
public void GetList()
{
string rowLimit = "2000"; // or whatever
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
System.Xml.XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
System.Xml.XmlElement queryOptions =
xmlDoc.CreateElement("QueryOptions");
queryOptions.InnerXml = "";
System.Xml.XmlNode nodes = _Service.GetListItems(_ListGuid, _ViewGuid,
query, viewFields, rowLimit, null, null);
foreach (System.Xml.XmlNode node in nodes)
{
if (node.Name.Equals("rs:data"))
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
if (node.ChildNodes[i].Name.Equals("z:row"))
{
XmlAttributeCollection att =
node.ChildNodes[i].Attributes;
String title = GetFieldValue("Title");
String partNumber = GetFieldValue("Part Number");
}
}
}
}
}
}
此外, SpFieldName 方法并非铁腕。对于列表中的大多数字段名称,这只是一个很好的猜测。不幸的是,这是一次发现之旅。如果它们不匹配,您需要公开XML以查找实际的字段名称。
好狩猎。