3

次のコードを使用して、ドキュメントライブラリ内にフォルダを作成しています。イベントはトリガーされ、コードの最後の行まで問題なく実行されます。ただし、フォルダが作成されていないか、ドキュメントライブラリに一覧表示されていません。

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;
        }
    }           
}
4

2 に答える 2

5

あなたが必要です

var i = spl.Items.Add("", SPFileSystemObjectType.Folder, "Helllworld");
i.Update(); 

それ以外の

spl.Items.Add("", SPFileSystemObjectType.Folder, "Helllworld");
spl.Update();

(あなたの電話が大丈夫だと仮定してAdd-それは私には大丈夫に見えます)

(また、処理が必要ですか?ハンドラーAllowUnsafeUpdatesにいるときに必要になるとは思っていませんでした。)ItemAdded

于 2012-10-01T15:46:19.703 に答える
0

ローリングの回答に基づいて、次のコードを開発しました。

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;
    }
}
于 2014-05-06T22:08:40.880 に答える