我有一個包含文件夾和項目的列表。這些文件夾是基於文件夾的特定內容類型,但具有屬性。如何獲取共享點列表中的所有文件夾和項目?
文件夾可以包含子文件夾和子項目。子文件夾可以包含子子文件夾等。我已經設法利用這種方式,所有項目和文件夾:
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。但是我忘記了一個限制:由於客戶的限制,我無法使用網絡服務。
這很簡單:)非常感謝你! –