protected void LoadingHandler(object sender, PersistenceLoadingEventArgs e) {}
Ultimate UI for ASP.NET Persistence Framework コンポーネントには、ページ ライフサイクルのさまざまな機会に発生し、特定の引数を装備する 4 つのイベント タイプがあります。2 つのイベントは、保持されたデータの保存プロセス中に発生し、他のイベントはデータの読み込み中に発生します。
PersistenceLoading* イベントは、ページの PageLoad イベントの後に発生します。PageLoad 中、保持されたデータは Persistence Framework で確実に使用できます。ポストバックのイベントでは、コントロールの状態は ViewState から復元されますが、ページが初めて要求される場合、Persistence Framework は ViewState の動作をシミュレートして状態を復元するための手順をとります。
PersistenceLoading イベントは、Web.config ファイルの persistenceIgnoreLoadingOnPostBack 属性値に基づいて、ページに対する最初の要求で発生します。この値が false の場合、ポストバックを含みページに対する要求ごとにイベントが発生します。場合によっては、ViewState を使用すると、ポストバック中にコントロールの状態を保存します。したがって、persistenceIgnoreLoadingOnPostBack を true に設定するとパフォーマンスが向上します。Persistence Loading イベントは初めて要求した時だけ発生するからです。
リスト 1: コード ビハインドで LoadingHandlers を作成
以下の項目は、リスト 1 に示すように LoadingHandler メソッドの引数で予測される値を説明しています。
sender - 現在のページを参照します
e - このイベントのタイプは、* PersistenceLoadingEventArgs* です。これは .NET CancelEventArgs オブジェクトを継承します。ひとつの一般的な目的は、特に必要がある場合にデータの読み込み処理をキャンセルするためにこのイベントを使用することです。PersistenceLoadingEventArgs は、読み込みが必要となる保持されるデータもラップします。
リスト 2 は、保持する対象のデータにアクセスするため、そしてイベントをキャンセルするオプションを公開するために使用される PersistenceLoadingEventArgs プロパティを示します。
リスト 2: PersistenceLoadingEventArgs プロパティ
PersistenceLoaded* イベントは、PersistenceLoading イベントの後に発生します。手順のこの段階では、Persistence Framework はすべてのコントロールの状態で保持されるデータを復元しています。例外のために復元に失敗すると、PersistenceLoaded ハンドラー内でそのエラーを処理できます。
リスト 3: コード ビハインドで LoadedHandler を作成
以下の項目は、リスト 3 に示すように LoadedHandler メソッドの引数で予測される値を説明しています。
sender - 現在のページを参照します
e - このイベントのタイプは、* PersistenceEventArgs* です。パーシステンス データは例外となります。これは保持されるデータの読み込み中に発生する場合があります。
リスト 4 は、保持する対象のデータにアクセスするため、そしてイベント起動中に発生した可能性のある例外へのアクセスを公開するために使用される PersistenceEventArgs プロパティを示します。
リスト 4: PersistenceEventArgs プロパティ
注: Persistence Loading イベント中に保持されるデータが取得されない場合、Persistence Loaded イベントは全く発生しません。
PersistenceSaving* イベントは、SaveStateComplete イベントの後に発生します。PersistenceSaved イベントを含み、両方のイベントは、ページが要求されるたびに発生します。この段階では、Persistence Framework は、すべてのコントロールの状態を保持します。イベントの EventArgs パラメーターは .NET CancelEventArgs オブジェクトを継承するので、特に必要である場合に保存プロセスをキャンセルできます。
リスト 5: コード ビハインドで SavingHandler を作成
以下の項目は、リスト 5 に示すように SavingHandler メソッドの引数で予測される値を説明しています。
sender - 現在のページを参照します
e - このイベントのタイプは、* PersistenceSavingEventArgs* です。これは .NET CancelEventArgs オブジェクトを継承します。つまり、ページを保持したくない場合、データの保存処理をキャンセルできます。
リスト 6 は、イベントをキャンセルするオプションを公開する PersistenceSavingEventArgs プロパティを示します。
リスト 6: PersistenceSavingEventArgs プロパティ
PersistenceSaved* イベントは、PersistenceSaving イベントの後に発生します。繰り返しますが、PersistenceLoaded イベントと同様、データを保持している間に例外が発生すると、例外を処理できます。リスト 7 は、保持されたデータを安定的なソース(ファイル、セッション、アプリケーション、または SQL)に保存できる構造を示します。最終的にデータを保存する前に、データを変更したり、コントロールやプロパティを追加/削除できます。
リスト 7: コード ビハインドで SavedHandler を作成
以下の項目は、リスト 5 に示すように SavedHandler メソッドの引数で予測される値を説明しています。
sender - 現在のページを参照します
e - このイベントのタイプは、* PersistenceEventArgs* です。パーシステンス データが例外となることを除いて、これは保持されたデータの保存中に発生する場合があります。PersistenceSaved イベント中、保持されたデータをコレクションに取得したり、一部のデータをコレクションに含めたり除外することができます。
リスト 8 は、保持する対象のデータにアクセスするため、そしてイベント起動中に発生した可能性のある例外へのアクセスを公開するために使用される PersistenceEventArgs プロパティを示します。
リスト 8: PersistenceEventArgs プロパティ