SharePoint:如何使用Web服务在列表中创建文件夹

时间:2009-11-04 06:58:29

标签: sharepoint wss

跟进我之前的问题here,其中我回答了如何在文档库中创建文件夹的问题。我现在需要在列表中创建一个文件夹,但似乎webDav方法不起作用。

有没有人有使用网络服务或webdav在列表中创建文件夹的代码段?

由于

在以下代码中不会产生错误,但不会创建该文件夹:

private void createFolderUsingWebDav(string siteAddress, string listAddress, string folderName)
        {

            string folderAddress = siteAddress + @"/" + listAddress + @"/" + folderName;
            HttpWebResponse response;
            try
            {
                HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(folderAddress);
                request.Credentials = wsLists.Credentials; // CredentialCache.DefaultCredentials;
                request.Method = "MKCOL";
                response = (System.Net.HttpWebResponse)request.GetResponse();
                response.Close();
            }
            catch (WebException ex)
            {
                if (ex.Status != WebExceptionStatus.ProtocolError)
                {
                    throw ex;
                }
            }
        }

在进一步检查中,正在创建物理文件夹,我通过将驱动器映射到sharepoint然后导航到列表文件夹来检查这一点,但是文件夹在列表视图中不可见。我在列表中使用Web界面创建的文件夹也可以在视图中看到,但实际上我可以看到它们与使用web dav创建的文件夹之间没有区别

1 个答案:

答案 0 :(得分:1)

找到有用的东西:

XmlDocument doc = new XmlDocument();
            XmlElement batch = doc.CreateElement("Batch");
            string item = "<Method ID=\"1\" Cmd=\"New\">" +
                "<Field Name=\"ID\">New</Field>" +
                "<Field Name=\"FSObjType\">1</Field>" +
                "<Field Name=\"BaseName\">" + folderName + "</Field></Method>";

            batch.SetAttribute("ListVersion", "1");
            batch.InnerXml = item;

            wsLists.UpdateListItems(listAddress, batch);