3

ItemUpdatedメソッドで必要な列の値を変更するItemAddingイベントを含む単純なイベントハンドラーがあります。Word 2007ドキュメント(* .docx、*。pptx、またはxlsx)をアップロードした後、列の値が変更されますが、ドキュメントを保護すると、ItemUpdatedメソッドで列の値が表示されなくなります。これはOffice2007ドキュメントでのみ発生し、他のファイルは値をクリアしません。

イベントハンドラは、MOSS2007のドキュメントライブラリで実行されます。

ありがとう

4

4 に答える 4

4

同じ問題があります。リストのプロパティが Office 2007 ドキュメントに追加されているように見えますが、アップロード/作成時のフィールドのデフォルト値のみです。アイテムが編集されると、Office ドキュメントの値がイベント ハンドラーで設定された値を上書きしていることに気付きます。

非同期イベント ハンドラーを使用している場合、これは発生しませんが、非同期イベント ハンドラーは、特定の種類の更新を伴う他のスレッドの更新と競合します。

この問題について、Microsoft との間でアクティブなサポート コールが行われています。彼らは、これが「まだ結果がありません」ではないことを認めています。

非同期イベント ハンドラー (Office ドキュメントから更新されるコードより少し遅れて実行される) を使用してみてください。ただし、注意が必要です。

アップデート:

回避策として、 SPWeb.ParserEnabledを FALSE に設定すると、ドキュメント プロパティへの接続が削除され、上記の動作が停止します。リスト プロパティが Office ドキュメントに追加されないようにします。

于 2008-10-15T20:30:55.610 に答える
0

ItemUpdatingメソッドにSPWeb.ParserEnabled=falseを指定する問題を解決します。

コード:

properties.ListItem.Web.ParserEnabled = false;

助けてくれてありがとう

于 2008-10-16T16:42:13.870 に答える
0

Office ドキュメントを SharePoint にアップロードすると、ドキュメントから列を抽出してリストに昇格させようとします。

ドキュメントに属性が設定されているかどうかを確認してください。これが事実である場合、それはあなたが見るものを説明することができます.

注: 詳細ドキュメント プロパティを開き、すべてのカスタム プロパティを削除してください。

于 2008-10-15T19:24:20.393 に答える
0

SPWeb.ParserEnabled = false の設定は機能しますが、影響があります。非常に顕著なものの 1 つは、サイトとリストのテンプレートが破損することです。SPWeb.ParserEnabled = false の場合、リストまたはサイト テンプレートを保存すると、メタ データ (機能 ID、製品バージョンなど) が設定されず、選択するテンプレートのリストで使用できなくなります。itemUpdated イベント中に SPWeb.ParserEnabled=true をリセットすることでこれを回避できるかもしれませんが、これですべての問題が解決するかどうかはまだ十分にテストしていません...

于 2009-01-30T22:03:49.240 に答える