SharePointのWebパーツを作成しています。 SyncChanges()メソッドとApplyChanges()メソッドをオーバーライドしているカスタムエディタパーツがあります。SharePoint WebパーツのCreateChildControls()およびApplyChanges()メソッドの呼び出しの順序
編集モードで[OK]をクリックするとページがブラウズモードに切り替わりますが、EditorPartで変更され、ApplyChanges()メソッドで保存されたデータ(propeties)は更新されません。変更を確認するには、もう一度[ページを入力]する必要があります(データをもう一度ポストしないでリロード)。
編集モードで[OK]をクリックした後、WebPart.CreateChildControls()が最初に呼び出され、EditorPart.ApplyChanges()が最初に呼び出された後、デバッグして何をしているのかがわかりました。したがって、データは更新されましたが、表示されるのは更新されていないデータでした。
この動作で何か他のものが見つかりました:WebPart.CreateChildControls()とEditorPart.ApplyChanges()を呼び出す間違った順序で、CreateChildControls()のWebPartに特定のコントロールを追加すると、エラーが発生します。私の場合は、WebDataTreeまたはUltraWebTreeコントロール(Infragistics)の追加が行われますが、一般的なASP.NET TextBoxでも同じ問題が発生します(ASP.net forum thread)。
したがって、ツリーを追加するとCreateChildControls()が最初に呼び出され、次にApplyChangesが呼び出されるため、実際ではありません。私はエディタの部分で行った変更を見るために更新する必要があります。
...私はControlsコレクションにツリーを追加するコメント場合は、ApplyChangesは、最初に呼び出され、(私は:)その木が必要除く)すべてがOKです
誰でもこの奇妙な動作を引き起こすことができるか知っていますか?
ないだろう。その特定の問題に取り組もうと数時間を経た後、私は編集モードのときにウェブ部分自体の中のコントロールをあきらめてレンダリングしました。 – Tom
これにもRanを付けます。 OnPreRenderにコードを移動する必要がありました。 –