2010-01-08 91 views
1

抱歉,如果這已被要求在其他地方標題,名稱和顯示名稱之間的區別。我看了,但找不到任何明確的答案。的Sharepoint:爲庫文件夾

我寫爲SharePoint 2010需要創建一個文檔庫文件夾的應用程序;一個用於應用程序處理的每個「作業」,作爲放置作業輸出的地方。但是,我遇到文件夾名稱衝突的問題。每個「作業」都被編碼爲另一個SharePoint列表中的xml文件。例如,它可能包含一個名爲「從docx到pdf.xml」的xml文件。到目前爲止,我有應用程序使用作業文件名減去擴展名在輸出列表中創建子文件夾。因此,在這種情況下,一個名爲「從docx到pdf」的文件夾。但是,一段時間後,應用程序可能不得不重新處理完全相同的工作。我希望能有在同一列表的第一另一子文件夾,具有完全相同的名稱在瀏覽器用戶可見......

你能在SharePoint列表中做到這一點?看起來普通的SPListItems具有Name,DisplayName和Title屬性。顯然,其中的一個必須是唯一的,以便SharePoint可以唯一標識該項目。但是這是什麼?這同樣適用於列表中的SPFolder項目嗎?我想在這裏我想有像重複的文件夾顯示名稱,但獨特的內部名稱。你有什麼想法如何做到這一點?到目前爲止,我的蹩腳方法是這樣的:

private SPFolder CreateSubFolder(SPList list, string visibleFolderName) 
    {   
     // create a new folder under the root folder 
     SPListItem newFolder = list.AddItem("", SPFileSystemObjectType.Folder, visibleFolderName);    
     newFolder.Update();    
     return newFolder.Folder; 
    } 

這顯然不起作用。任何想法如何改變具有相同的可見名稱,但不同內部名稱(也許使用Guids ...)?:D預先感謝。

+0

其實也沒什麼,SharePoint不能很好地使用這些字段唯一標識列表項。唯一必須唯一的是「ID」字段,該字段與創建的項目分配,並且無法更改。 – 2016-09-13 15:35:46

回答

3

像普通的文件系統,相同的子文件夾下的文件夾必須是唯一的。因此,Add()方法的最後一個參數應該是唯一的,因爲它指示文件夾名稱。

您可以放心地asssign重複標題創建文件夾後,使用這段代碼:

SPListItem newFolder = list.Items.Add("", SPFileSystemObjectType.Folder, uniqueFolderName); 
newFolder["Title"] = "New Folder"; // Can be duplicated 
newFolder.Update(); 

現在你將有相同的標題,但不同名稱的文件夾。儘管如此,當您嘗試從Windows資源管理器或SharePoint默認列表視圖瀏覽這些文件夾時,它會顯示文件夾名稱(這是唯一的),而不是標題(您需要)。因此,您需要創建自定義視圖並顯示標題字段而不是文件夾名稱。

+0

非常好!非常感謝你! MS通常會對其技術文檔進行過濾,但找到你所闡明的觀點的解釋幾乎是不可能的(至少對於SP2010而言)。 :D – user246091 2010-01-13 20:41:16

+0

其實,這似乎並不奏效......但我認爲這是因爲SPFolders沒有Title屬性,而SPListItem的確如此。基本上,我不能做我想要的東西,除非我創建了SPFolder的子類。如果這甚至是可能的。無論哪種方式,問題的答案。乾杯。 – user246091 2010-01-13 22:13:11

+0

如果您從我的示例中注意到,實際上newFolder變量是SPListItem對象,而不是SPFolder對象,所以是的,您可以設置Title屬性。 順便說一句,你可以創建自己的ContentType其導出文件夾的內容類型。但令人遺憾的是,您無法從API中繼承SPFolder,因爲它沒有公共構造函數。 – denni 2010-01-19 07:03:14

相關問題