我使用以下代码在文档库中创建一个文件夹。事件被触发并执行到我的代码的最后一行,没有任何问题。但是,文件夹未在我的文档库中创建或列出。
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
string strDashListRoot = "http://win-hmpjltdbh5q:37642";
using (SPSite site = new SPSite(strDashListRoot))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
SPList spl = web.Lists["client_documents"];
spl.Items.Add("", SPFileSystemObjectType.Folder, "Helllworld");
spl.Update();
web.AllowUnsafeUpdates = false;
}
}
}
答案 0 :(得分:5)
你需要
var i = spl.Items.Add("", SPFileSystemObjectType.Folder, "Helllworld");
i.Update();
而不是
spl.Items.Add("", SPFileSystemObjectType.Folder, "Helllworld");
spl.Update();
(假设你的Add
电话没问题 - 我看起来没事)
(另外,您确定需要AllowUnsafeUpdates
处理吗?当您在ItemAdded
处理程序中时,我不会期望它是必要的。)
答案 1 :(得分:0)
我根据Rawling的答案开发了以下代码:
private static void CreateFolder(SPWeb web, SPList spList, SPListItem currentItem, string folderName)
{
if (currentItem.FileSystemObjectType != SPFileSystemObjectType.Folder)
{
string itemUrl = web.Url + "/" + currentItem.Url.Substring(0, currentItem.Url.LastIndexOf('/'));
var folder = spList.Items.Add(itemUrl, SPFileSystemObjectType.Folder, folderName);
string folderUrl = itemUrl + "/" + folder.Name;
if (!FolderExists(folderUrl, web))
{
try
{
folder.Update();
}
catch (Exception)
{
throw;
}
}
}
}
public static bool FolderExists(string url, SPWeb web)
{
if (url.Equals(string.Empty))
{
return false;
}
try
{
return web.GetFolder(url).Exists;
}
catch (ArgumentException)
{
throw;
}
catch (Exception)
{
throw;
}
}