2010-03-12 26 views
2

我正尝试使用C#中的Web服务访问文档库中的文件夹。 我使用SiteData的EnumerateFolder()方法来获取子文件夹和文件。但该方法只给我每个条目3个属性。迭代SharePoint文件夹内容时出现的问题

  1. IsFolder
  2. 网址
  3. 最近更新日期

那么,如何才能 '修改者' 字段的值。

还有另一种枚举文件夹和子文件夹的解决方案。

谢谢。

回答

1

您需要使用List API才能从对象中获取更多属性。

[编辑 - 完整的代码示例]

样品需要进行清理,但应该给你什么,你需要

public void SomeFunction() 
{ 
    Lists lists = new Lists(); //http://server/_vti_bin/Lists.asmx 

    XmlNode coll = lists.GetListCollection(); 

    XmlNamespaceManager nsMgr = new XmlNamespaceManager(coll.OwnerDocument.NameTable); 
    nsMgr.AddNamespace("sp", "http://schemas.microsoft.com/sharepoint/soap/"); 
    nsMgr.AddNamespace("z", "#RowsetSchema"); 

    XmlDocument xmlDoc = new XmlDocument(); 
    XmlElement query = xmlDoc.CreateElement("Query"); 
    XmlElement viewFields = xmlDoc.CreateElement("ViewFields"); 
    XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions"); 

    viewFields.InnerXml = "<FieldRef Name=\"Modified_x0020_By\" />"; 
    queryOptions.InnerXml = "<ViewAttributes Scope=\"RecursiveAll\"/>"; 

    XmlNodeList siteLists = coll.SelectNodes("//sp:List", nsMgr); 
    foreach (XmlNode list in siteLists) 
    { 
     if (list.Attributes["ServerTemplate"].Value != "101") continue; //101=DocLib 
     XmlNode listItemCollection = lists.GetListItems(list.Attributes["Name"].Value, string.Empty, query, 
                 viewFields, "4000", 
                 queryOptions, null); 

     XmlNodeList listItems = listItemCollection.SelectNodes("//z:row", nsMgr); 
     foreach (XmlNode listItem in listItems) 
     { 
      if (listItem.Attributes["ows_FSObjType"] == null) continue; 
      if (!listItem.Attributes["ows_FSObjType"].Value.EndsWith("#1")) continue; 
      PrintModifiedBy(listItem); 
     } 
    } 
} 

private void PrintModifiedBy(XmlNode listItem) 
{ 
    string modifiedBy; 
    if (listItem.Attributes["Modified_x0020_By"] != null) 
     modifiedBy = listItem.Attributes["ows_Modified_x0020_By"].Value; 
    else 
     modifiedBy = listItem.Attributes["ows_Editor"].Value; 
    Console.WriteLine(modifiedBy); 
} 
+0

我使用的Web服务。 – Royson 2010-03-12 08:25:51

+0

编辑我的答案与ListService的一些Caml代码。这不完整,但应该让你开始。 – 2010-03-12 09:42:23

+0

谢谢mikael ..我会尝试CAML查询。但PLZ更新与我的问题。 ;) – Royson 2010-03-12 10:15:38