ASP.NET を使用しています。ReportPage1 と ReportOutputPage1 があります。これらは異なる aspx ファイルであり、異なる MasterPages を持っています。ただし、両方のページで使用するには同じ SqlDataSource オブジェクトが必要です。ReportPage では、StoredProcedure を呼び出してデータを CSV ファイルにインポートするために SqlDataSource が必要ですが、ReportOutputPage では、SqlDataSource を使用して同じ StoredProcedure を呼び出して GridView に入力する必要があります。
ReportPage1 は「メイン」ページです。このページからボタンをクリックすると、ReportOutputPage1 が開き、新しいウィンドウに表示されます。ReportPage はReportOutputPage1 のPreviousPageです。
上記は Report1 の例です。Report2 (SqlDataSource2 を使用) および Report3 (SqlDataSource3) などについても同じ考えです。10 の異なるレポート。
2ページごとにSqlDataSourceを再利用する方法(ReportPageとReportOutputPage)?
Web で見つけた最初の提案 - ReportPage と ReportOutputPage の両方に masterpage を使用します。ReportPage と ReportOutputPage の異なるマスターページが既にあるため、これは機能しません。また、レポートごとに 10 個の異なるマスターページを作成する必要があります。
2 番目の提案は、ReportPage で SqlDataSource を定義し、ReportOutputPage で PrevousePage を使用してそれを再利用することでしたが、これは私の特別なケースでは機能しません (私は Ajax スタッフと部分ページ ポストバックを使用しており、PreviousPage を失っています。また、SqlDataSource をシリアル化できませんでした) ViewState などに保存します)。
ユーザー コントロールを作成します。おそらくこれでうまくいくかもしれませんが、新しいレポートのたびに UserControl を作成するのは時間がかかります (10 個のレポート - 10 個のユーザー コントロール?)。
単純に SqlDataSource をコピーして貼り付けます (私は 1 つのレポートに対して行いました) が機能しますが、コードの再利用のようなものが欲しいです。必要に応じて、誰かが 2 つの異なる場所で SqlDataSource を変更するのを忘れる可能性があります。
Report および ReportOutput ページのコード (特に SqlDataSource) を再利用する方法を教えてください。