2011-10-31 6 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を取得しているすべてのフォルダ、のために新しいクエリを送信しなければならないことです。フォルダ/アイテム構造を失うことなく、1回の呼び出しでリスト全体を取得する方法はありますか?

ありがとうございます!

編集:CAMLを使用する必要はありません。しかし、私が忘れていた制限があります:私は顧客の制限のためにウェブサービスを使用することができません。

答えて

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

答えを説明してください –

関連する問題