利用CSOM向列表新增資料夾

Justin-Liu發表於2016-08-17


部落格地址:http://blog.csdn.net/FoxDave

本文只為記錄一下這個小細節,不會過多贅述,開發可以看懂。

如果想向一個列表或庫中新增資料夾,平時我們自然想到的是list.rootfolder.folders.add方法或者folder.folders.add方法,這種方式在庫中是可以新增成功的,程式碼片段如下:

List list = web.Lists.GetByTitle("MyDoc1");
                ctx.Load(list, l => l.RootFolder);
                ctx.ExecuteQuery();

                list.RootFolder.Folders.Add("test");
                ctx.ExecuteQuery();

在SPD中可以看到建立成功的資料夾如下圖

但是如果在列表如自定義列表中使用此方式,資料夾是新增成功了,但在介面上是不可見的,在SPD中的效果如下圖,可以看到這只是一個普通的資料夾,跟直接從介面上建立出來的是不同的。

也就是說,當需要往列表裡面建立資料夾時,需要使用另一種方式,新增Item的方式去建立,程式碼片段如下:

List list = web.Lists.GetByTitle("testlist");
                ctx.Load(list, l => l.RootFolder);
                ctx.ExecuteQuery();
                ListItemCreationInformation folderCreate = new ListItemCreationInformation();
                folderCreate.UnderlyingObjectType = FileSystemObjectType.Folder;
                folderCreate.FolderUrl = "/sites/Meliodas_AA/Lists/testlist/uifolder";
                ListItem folderItem = list.AddItem(folderCreate);
                folderItem["Title"] = "new test1";
                folderItem.Update();
                ctx.ExecuteQuery();

說明一點,如果要往列表的根目錄新增資料夾,可以不用指定FolderUrl屬性,如果想在子資料夾中建立的話,需要指定該屬性,可以傳入父資料夾物件的ServerRelativeUrl屬性。

另外,資料夾在介面上顯示的名稱需要設定ListItem的["Title"]屬性,LeafName屬性指定了Url。

相關文章