2010-05-27 64 views
1

我有一個列表,其中有一個兩級層次的文件夾。類似這樣的:如何從CAML查詢中獲取文件夾?

List 
    Folder_1 
     SubFolder_1 
       Item 1_1_1 
       Item 1_1_2 
     SubFolder_2 
       Item 1_2_1 
       Item 1_2_2 
       Item 1_2_3 
    Folder_2 
     SubFolder_1 
       Item 2_1_1 
       Item 2_1_2 
       Item 2_1_3 
     SubFolder_2 
       Item 2_2_1 
       Item 2_2_2 

我想添加一個列表項到一個文件夾,具體取決於一些標準。我不想循環瀏覽所有文件夾,因爲文件夾數量更多。所以,我想運行一個CAML查詢來獲取文件夾。

下面CAML查詢給我列表中的所有文件夾:

<Where> 
    <Eq> 
     <FieldRef Name='FSObjType' /> 
     <Value Type='int'>0</Value> 
    </Eq> 
</Where> 

我如何可以添加其他條件,上述查詢,這樣我可以得到一個特定的文件夾時,我知道確切的文件夾名稱?

+0

對您的CAML查詢進行小修改,如果您檢查「FSObjType」的值,您將看到0返回所有文件,但1將返回所有文件夾 https://msdn.microsoft.com/zh-cn/ -us /庫/ microsoft.sharepoint.client.filesystemobjecttype.aspx – Mathieu 2018-01-18 12:11:17

回答

3

您可以嘗試使用FileLeafRef或FileDirRef作爲名稱。不過,我認爲這不會起作用,因爲您需要SPFolder對象向其添加列表項,並且CAML查詢返回SPListItemCollection。請查看http://msdn.microsoft.com/en-us/library/bb862315.aspx以獲取您可以嘗試的一些字段名稱的列表。

由於您知道文件夾的名稱(以及我推測的整個路徑),爲什麼不使用SPWeb.GetFolder方法獲取文件夾,然後使用該文件夾對象添加項目?

以下兩個鏈接可能是有用的:

從第二個鏈接一個片段:

克雷亞創建SPFolder中的SPListItem 使用OM

使用 WSS 3.0對象模型創建文件夾(SPFolder)非常簡單。 在 列表中創建列表項(SPListItem)也很簡單。它花了我 一段時間,並且一些電子郵件到 最終創建一個 現有文件夾中的列表項。所以這裏是代碼 爲您節省一些時間。

SPSite site = new SPSite("http://[ServerName/sitename]"); 
SPWeb web = site.OpenWeb(); 
SPList list = web.Lists["Tasks"]; 

SPFolder f = web.GetFolder("http://[ServerName/sitename]/Lists/Tasks/Test"); 
if(f.Exists) 
{ 
    SPListItemCollection itemColl = list.Items; 

    SPListItem item = itemColl.Add(f.ServerRelativeUrl, 
            SPFileSystemObjectType.File, 
            null); 

    item["Title"] = "Added from OM"; 
    item.Update(); 
} 

如果要上傳的文件,第一個鏈接將是有益的。如果它只是一個普通的列表項,第二個鏈接(和我在這裏粘貼的代碼)可能會有用。

祝你好運!

相關問題