更新プログラム: これは、作品が、コメントで説明する重要な制限があります。. これはまだいくつかの状況で役に立つかもしれません.
更新プログラム 2: 私の現在のプロジェクトで, ユーザーは、常にドキュメントをアップロードします。. その結果, 私は MS Word を実行しているされ、ファイルがそれに改名されたと考えている問題に実行しないでください。. 問題に遭遇しました, 「ファイルに他の誰かによって変更されました。" 簡単なセマフォ型フラグでこれを解決し、. ユーザー既定値から何かをメタ データ フィールドを変更する必要. Itemupdated() 受信機の有効な値が実際には、名前の変更を実行する前に、その後に見える, 任意の問題を持っていなかった. あなたのマイレージは異なる場合があります。.
私は特定の名前付け規則に準拠する特定のドキュメント ライブラリにアップロードされたファイルの名前を変更するクライアントの要件があります。. API は"名前の変更を行いません。()" メソッド. 代わりに, 私たちを使用します。 「MoveTo(…)". ここではこれを達成するためにコードの最小ビットです。:
パブリック オーバーライド void ItemAdded(SPItemEventProperties プロパティ) { SPFile f = プロパティ。ListItem.File; f.MoveTo(プロパティ。ListItem.ParentList.RootFolder.Url + 「/xyzzy.doc"); f.Update(); } |
唯一のトリッキーなビットは」プロパティです。ListItem.ParentList.RootFolder.Url」. [Moveto]() メソッドには、URL が必要です。. 文字列のポイントをマッシュが私で私の現在のドキュメント ライブラリのルート フォルダーに. これにより、私のイベント レシーバーで、ハードコーディングを避けるために.
これは同じ事をするより役に立つのバージョンです。, しかし、「タイトル」に、ファイルの名前を割り当てます:
パブリック オーバーライド void ItemAdded(SPItemEventProperties プロパティ) { される DisableEventFiring(); // ファイル自体の名前をこのアイテムのタイトルを割り当てる. // メモ: 我々 は、ファイル自体を変更する前にこの割り当ての場所を取る必要があります。. // Update を呼び出す() SPFile のプロパティを無効にするようです。 // いくつかの意味. 「タイトル更新" 変更されるまでに失敗しました (更新() 呼び出し) // 変更前のファイル名に移動されました。. プロパティ。ListItem[「タイトル"] プロパティを = します。ListItem.File.Name; プロパティ。ListItem.Update(); SPFile f = プロパティ。ListItem.File; // ファイルの拡張子を取得します。. 我々 は後で必要があります。. 文字列 spfileExt = 新機能 FileInfo(f.Name).拡張機能; // リスト アイテムの ID をファイルの名前を変更、ファイルの拡張子を使用して維持するには // その部分はそのままの. f.MoveTo(プロパティ。ListItem.ParentList.RootFolder.Url + "/" + プロパティ。ListItem[「ID"] + spfileExt); // 移動をコミットします。. f.Update(); EnableEventFiring(); } |