0

コードを修正しました。現在のドキュメント ライブラリにアップロードできるようになりました (ドキュメント ライブラリや実際の URL をハードコーディングする必要はありません)。私が今する必要があるのは、フォルダが存在するかどうかを確認することだけです。現在のドキュメント ライブラリに存在しない場合はフォルダーを作成します。解決策を見つけた場合は、引き続きコードを更新します。

ありがとう

public override void ItemAdded(SPItemEventProperties properties)
{
    base.ItemAdded(properties);


    using (SPSite currentSite = new SPSite(properties.WebUrl))
    using (SPWeb currentWeb = currentSite.OpenWeb())

    {   SPListItem oItem = properties.ListItem;             
        string doclibname = "Not a doclib";

        //Gets the name of the document library
        SPList doclibList = oItem.ParentList;

        if (null != doclibList)
        {
            doclibname = doclibList.Title;
        }
        // this section also not working.
        // getting Object reference not set to an instance of an object or something like that.
        //if (currentWeb.GetFolder("uHippo").Exists == false)
        //{

            SPListItem folder = doclibList.Folders.Add(doclibList.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, "uHippo");
            folder.Update();
        //}

    }
} 
4

1 に答える 1

5

「doclibList」がフォルダーを作成するドキュメント ライブラリであると仮定すると、そこにあるフォルダーを反復処理して、必要な名前が見つかるかどうかを確認できます。doclibList が null でないかどうかを確認した後に、以下を追加します。

bool foundFolder = false; //Assume it isn't there by default
if (doclibList.Folders.Count > 0) //If the folder list is empty, then the folder definitely doesn't exist.
{
  foreach (SPListItem fItem in doclibList.Folders) 
  {
    if (fItem.Title.Equals("uHippo"))
    {
      foundFolder = true; //Folder does exist, break loop.
      break;
    }
  }
}
if (foundFolder == false) 
{
  SPListItem folder = doclibList.Folders.Add(doclibList.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, "uHippo");      
  folder.Update(); 
}
于 2010-04-07T12:44:07.830 に答える