【发布时间】:2012-09-22 06:50:06
【问题描述】:
我正在使用 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?
我在 Web 中找到的第一个建议 - 对 ReportPage 和 ReportOutputPage 都使用母版页。这不起作用,因为我已经为 ReportPage 和 ReportOutputPage 建立了不同的母版页,然后我需要为每个报告创建 10 个不同的母版页。
第二个建议是在 ReportPage 上定义 SqlDataSource,然后在 ReportOutputPage 上使用 PrevousePage 重用它,但这不适用于我的特殊情况(我正在使用 Ajax 人员和部分页面回发,而且我正在丢失 PreviousPage,也SqlDataSource 无法序列化以将其保存在 ViewState 或类似中)。
创建用户控件。可能这可行,但每次为新报告(10 个报告 - 10 个用户控件?)创建 UserControl 非常耗时。
简单地复制和粘贴 SqlDataSource(我为一份报告做了)可以工作,但我想要更像代码重用的东西。如有必要,有人可能会忘记在两个不同的地方修改 SqlDataSource。
能否请您给我一些建议,如何为报告和报告输出页面重用代码(特别是 SqlDataSource)?
【问题讨论】:
标签: asp.net code-reuse