2011-10-31 48 views
4

我有一個包含文件夾和項目的列表。這些文件夾是基於文件夾的特定內容類型,但具有屬性。如何獲取共享點列表中的所有文件夾和項目?

文件夾可以包含子文件夾和子項目。子文件夾可以包含子子文件夾等。我已經設法利用這種方式,所有項目和文件夾:

void TraverseList(SPList list) 
    { 
     Trace.WriteLine("Traversing list: " + list.Title); 
     Trace.WriteLine("Base type: " + list.BaseType.ToString()); 
     TraverseListFolder(list.RootFolder); 
    } 

    void TraverseListFolder(SPFolder folder) 
    { 
     SPQuery qry = new SPQuery(); 
     qry.Folder = folder; 
     Trace.WriteLine("Foldername: " + folder.Name); 
     SPWeb web = null; 

     try 
     { 
      web = folder.ParentWeb; 
      SPListItemCollection ic = web.Lists[folder.ParentListId].GetItems(qry); 

      foreach (SPListItem subitem in ic) 
      { 
       SPFieldLookupValue temp = new SPFieldLookupValue(subitem["TargetPage"].ToString()); 
       Trace.WriteLine("TargetPage: " + temp); 
       Trace.WriteLine("ItemName: " + subitem.Name); 
       if (subitem.Folder != null) 
       { 
        TraverseListFolder(subitem.Folder); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Trace.WriteLine(ex.Message); 
      throw; 
     } 
     finally 
     { 
      if (web != null) 
      { 
       web.Dispose(); 
      } 
     } 
    } 

在這個解決方案的問題是,我要送一個新的查詢每個文件夾,這是越來越imperformant當名單還在不斷增加。有沒有辦法通過一個調用來獲取整個列表,而不會丟失文件夾/項目結構?

感謝您閱讀本文!

編輯:這不是要求使用CAML。但是我忘記了一個限制:由於客戶的限制,我無法使用網絡服務。

回答

-1
query.ViewAttributes="Scope='RecursiveAll'"; 
+1

請解釋你的答案 –

相關問題