1

これが他の場所で尋ねられた場合は申し訳ありません。調べましたが、明確な答えが見つかりません。

ドキュメントライブラリにフォルダーを作成する必要があるSharePoint2010用のアプリを作成しています。アプリが処理する「ジョブ」ごとに1つ、ジョブ出力を配置する場所として。しかし、フォルダ名の衝突で問題が発生しています。各「ジョブ」は、別のSharePointリストでxmlファイルとしてエンコードされます。たとえば、「docxからpdf.xmlへ」というxmlファイルが含まれている場合があります。これまでのところ、ジョブファイル名から拡張子を除いたものを使用して、出力リストにサブフォルダーを作成するアプリがあります。したがって、この場合は「docxからpdfへ」というフォルダです。ただし、しばらくすると、アプリでまったく同じジョブを再処理する必要がある場合があります。最初のサブフォルダーと同じリストに別のサブフォルダーを含め、ブラウザーでユーザーにまったく同じ名前を表示できるようにしたい...

これをSharePointリストで実行できますか?通常のSPListItemには、Name、DisplayName、およびTitleプロパティがあるようです。明らかに、SharePointがそのアイテムを一意に識別できるように、これらの1つは一意である必要があります。しかし、それはどれですか?また、同じことがリスト内のSPFolderアイテムにも当てはまりますか?ここでは、フォルダーの表示名を複製したり、内部名を一意にしたりしたいと思います。これを行う方法について何かアイデアはありますか?これまでのところ、私のくだらない方法は次のようになります。

 private SPFolder CreateSubFolder(SPList list, string visibleFolderName)
    {           
        // create a new folder under the root folder
        SPListItem newFolder = list.AddItem("", SPFileSystemObjectType.Folder, visibleFolderName);            
        newFolder.Update();               
        return newFolder.Folder;
    }

これは明らかに機能しません。同じ表示名を持つように変更する方法についてのアイデアはありますが、内部名は異なります(おそらく、Guidを使用しています...)?:Dよろしくお願いします。

4

1 に答える 1

3

通常のファイルシステムと同様に、同じサブフォルダの下のフォルダは一意である必要があります。したがって、Add()メソッドの最後のパラメーターはフォルダー名を示すため、一意である必要があります。

次のコードを使用して、フォルダの作成後に重複するタイトルを安全に割り当てることができます。

SPListItem newFolder = list.Items.Add("", SPFileSystemObjectType.Folder, uniqueFolderName);
newFolder["Title"] = "New Folder"; // Can be duplicated
newFolder.Update();

これで、同じタイトルで異なる名前のフォルダーが作成されます。それでも、WindowsエクスプローラーまたはSharePointの既定のリストビューからこれらのフォルダーを参照しようとすると、タイトル(必要な)ではなく、フォルダー名(一意)が表示されます。したがって、カスタムビューを作成し、フォルダ名の代わりにタイトルフィールドを表示する必要があります。

于 2010-01-12T07:23:39.770 に答える