随笔 - 106  文章 - 2  评论 - 2017  阅读 - 43万 

  最近玩Reporting Service报表,微软官方客户端展现实现中有这么一段代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Get report path from configuration file
        Uri serverurl = new Uri(ConfigurationManager.AppSettings["ReportServerUrl"]);
        string reportsfolder = ConfigurationManager.AppSettings["SampleReportsPath"];                                           // folder or site path
        string fileextension = (ConfigurationManager.AppSettings["ReportServerMode"] == "SharePoint" ? ".rdl" : String.Empty);  // extension, depending on the report server mode
                                                                                                                 
        ReportViewer1.ServerReport.ReportServerUrl = serverurl;
        ReportViewer1.ServerReport.ReportPath = String.Format("{0}/Company Sales 2008{1}", reportsfolder, fileextension);
        ReportViewer2.ServerReport.ReportServerUrl = serverurl;
        ReportViewer2.ServerReport.ReportPath = String.Format("{0}/Employee Sales Summary 2008{1}", reportsfolder, fileextension);
        ReportViewer3.ServerReport.ReportServerUrl = serverurl;
        ReportViewer3.ServerReport.ReportPath = String.Format("{0}/Product Catalog 2008{1}", reportsfolder, fileextension);
        ReportViewer4.ServerReport.ReportServerUrl = serverurl;
        ReportViewer4.ServerReport.ReportPath = String.Format("{0}/Sales Trend 2008{1}", reportsfolder, fileextension);
        ReportViewer5.ServerReport.ReportServerUrl = serverurl;
        ReportViewer5.ServerReport.ReportPath = String.Format("{0}/Territory Sales Drilldown 2008{1}", reportsfolder, fileextension);
    }
}

  忍不住手痒一下,把它变成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack) return;
 
    // Get report path from configuration file
    Uri serverurl = new Uri(ConfigurationManager.AppSettings["ReportServerUrl"]);
    string reportsfolder = ConfigurationManager.AppSettings["SampleReportsPath"];
 
    // folder or site path. extension, depending on the report server mode
    string fileextension = (ConfigurationManager.AppSettings["ReportServerMode"] == "SharePoint" ? ".rdl" : String.Empty);
 
    Action<Microsoft.Reporting.WebForms.ReportViewer, string> setReportViewer =
        (report, reportName) =>
        {
            report.ServerReport.ReportServerUrl = serverurl;
            report.ServerReport.ReportPath = String.Format("{0}/{2}{1}", reportsfolder, fileextension, reportName);
        };
 
    setReportViewer(ReportViewer1, "Company Sales 2008");
    setReportViewer(ReportViewer2, "Employee Sales Summary 2008");
    setReportViewer(ReportViewer3, "Product Catalog 2008");
    setReportViewer(ReportViewer4, "Sales Trend 2008");
    setReportViewer(ReportViewer5, "Territory Sales Drilldown 2008");
}

  这个变化有三点:

 

  1、把IsPostBack条件判断反转,减少一层嵌套。

  2、把设置ReportViewer的相同逻辑提取出来,在一个委托中设置。

  3、让注释与上行代码隔一行,并单独占一行。

  应该再简单没有了吧,但是,你会吗?Sorry,你一定会,但即使你会,微软都不会去做,你会去做吗?

posted on   小城故事  阅读(3530)  评论(39编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示