我正在使用 ASP.NET。我有一个 ReportPage1 和 ReportOutputPage1。这些是不同的 aspx 文件,并且具有不同的 MasterPages。但是,我需要在两个页面上使用相同的 SqlDataSource 对象。在 ReportPage 上我需要 SqlDataSource 来调用 StoredProcedure 并将数据导入 CSV 文件,但在 ReportOutputPage 上我需要使用 SqlDataSource 来调用相同的 StoredProcedure 并填充 GridView。
ReportPage1 是“主”页面 - 从该页面单击按钮会打开 ReportOutputPage1 并将其显示在新窗口中。ReportPage 是ReportOutputPage1 的PreviousPage。
以上是 Report1 的示例。Report2(带有 SqlDataSource2)和 Report3(SqlDataSource3)等的想法相同 - 10 个不同的报告。
如何为每两个页面(ReportPage & ReportOutputPage)重用SqlDataSource?
我在网络上找到的第一个建议 - 对 ReportPage 和 ReportOutputPage 都使用母版页。这不起作用,因为我已经为 ReportPage 和 ReportOutputPage 提供了不同的母版页,然后我需要为每个报告创建 10 个不同的 MasterPages。
第二个建议是在 ReportPage 上定义 SqlDataSource,然后在 ReportOutputPage 上使用 PrevousePage 重用它,但这不适用于我的特殊情况(我正在使用 Ajax 人员和部分页面回发,并且丢失了 PreviousPage,SqlDataSource 也无法序列化为将其保存在 ViewState 或类似文件中)。
创建用户控件。可能这可以工作,但每次为新报告创建 UserControl 非常耗时(10 个报告 - 10 个用户控件?)。
简单地复制和粘贴 SqlDataSource(我为一份报告做了)可以工作,但我想要更像代码重用的东西。如有必要,有人可能会忘记在两个不同的地方修改 SqlDataSource。
能否请您给我一些建议如何重用报告和报告输出页面的代码(特别是 SqlDataSource)?