FileUploadコントロールがカスタムリスト編集フォームで現在のリスト項目にバインドされているのはなぜですか?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/37529

質問

リストのカスタム編集フォームを書きました。これは、添付ファイルの形式の一部であるため、添付ファイルなどのボックス機能のうちどちらを紛失したことを意味します。私がフォームを実装した方法は、ASP.NETとC#コードの後ろにカスタムビジュアルWebパートを作成し、展開中にeditform.aspxページの既存の編集Webパーツを非表示にしてから、Webパーツを追加します。< / P>

フォームを開発した方法は、私の形式がSharePointについての何も知らない懸念の適切な分離で、データオブジェクトをDataManagerオブジェクトに渡してデータをSharePointに書き込むだけです。

私が書いた添付ファイルの形式で問題が発生します。私が見つけたことは、Post Backの際にSPContext.Current.ListItem.AttachmentsFileUploadコントロール内のファイルをすぐに入れることです。これを実現するためのコードを書く必要はありませんでした - コントロールでファイルが選択されている間はポストバックをトリガーするだけです。

ほとんどの場合、私はこれが起こるという事実を無視することができ、リスト項目のインスタンスを実際に更新することは決してないので、すべてがうまく機能します。しかし、同じ名前の添付ファイルがすでに存在するファイルをアップロードするなど、いくつかのエッジケースでは、コードに触れずにフォームが吹き飛ばされます。

AttachmentsControlSPContext.Current.FormContext.FieldControlCollectionがあることも、UserControlのPage_Initイベントでこれを削除することは問題を解決しません。

リスト項目のコンテキスト内で私のフォームが欲しいのは、ボックスツールバー/リボン/コンテキストメニューをすべて適切にフォームにリンクするようにするためのものです。編集フォームからWebパーツを持つコンテキストページにリダイレクトできますが、これはハッキングで不要です(ただの悪いコーディングには言及されていません)。

この行動が起こっている理由についての洞察を持っていますか。このような独自の使用のためのコントロールを自動的にハイジャックするためのリストフォームのための非常に悪いデザインのようです。 SharePointが独自のコントロールを持つべきであり、ただASP.NETコントロールを一括して残したままにしているように感じますが、それはそうではないようです。

役に立ちましたか?

解決

同じ名前の添付ファイルが複数回追加された場合に標準リストフォームに。アイテムが保存される場合、フォームは例外をスローし、添付ファイルの1つが複数の時間を追加し、アイテムの追加を防ぐことができませんでした。

あなたの場合はこの例外を上書きし、リスト項目を保管しようとしたときに添付ファイルが利用できないことを示します。この動作を回避するには、添付ファイルが複数回追加されたかどうかを手動で確認する必要があります。常に失敗します。

隠してはなく、デフォルトのNewform Webパーツを削除する必要があります。それから例外は上げられず、あなたは添付ファイルを得ることができます。

他のヒント

イベントハンドラをItemAddingイベントに添付した場合、エラー状態に発生しますか?そのイベントを処理するか、システムシステムのエラーメッセージを抑制して自分のニカワーを抑制してください。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top