我試圖編寫一個CAML查詢,該查詢針對特定SPList執行,作用域爲特定文件夾,從該點遞歸,並返回所有ListItems(符合條件)和Folders 。包含結果集中的文件夾的CAML查詢
下面是這似乎是它應該工作的查詢(格式化的可讀性)代碼:
SPQuery query = new SPQuery();
query.Query = "
<Where>
<Or>
<Contains>
<FieldRef Name=\"FileRef\" />
<Value Type=\"Text\">foo</Value>
</Contains>
<Eq>
<FieldRef Name=\"FSObjType\" />
<Value Type=\"Lookup\">1</Value>
</Eq>
</Or>
</Where>";
query.ViewFields = "
<FieldRef Name=\"CustomField1\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField2\" Nullable=\"TRUE\" />
<FieldRef Name=\"CustomField3\" Nullable=\"TRUE\" />
";
query.RowLimit = 500;
query.ViewAttributes = "Scope=\"RecursiveAll\"";
query.Folder = startingFolder;
DataTable dt = myList.GetItems(query).GetDataTable();
所以 - 這隻能返回時listItems - 沒有文件夾。
如果我從查詢中刪除了其他條件,只留下FSObjType=1
,我得到一個COM異常「無法完成此操作,請重試。」
如果我然後刪除查看字段,只留下Scope=RecursiveAll
和FSObjType=1
,我得到一個空的結果集。
你有沒有解決過這個問題?我有同樣的問題,除非有解決方案,否則我將需要繼續並實際編寫一個遞歸函數來執行此操作。 – jeremcc 2009-12-30 20:03:42
@codeflunky不幸的是,我從來沒有得到這個工作正常。 – 2010-01-02 05:00:28
@codeflunky如果您確實找到解決方案,請在此處發佈! – 2010-01-02 05:02:24