ReportingService及FacadeSession阅读

关键字:Reporting Service,Façade,ASP.NET Session

Reporting Service:

       以前的项目中用到sqlserver2005下的business studio创建reporting service 报表(*.rdlc),那是单独的报表项目,始终是要集成到应用程序中的,而且那之下创建单独的报表项目其发布和集成并不方便,牵扯到windows权限,数据源更新等问题。

       前些天在 codeProject 偶然看到一篇在 asp.net 中创建 rdlc Drill-though 报表并用 ms ReportViewer 服务器控件查看报表的文章,才晓得原来 ms 的报表可以这么方便直接在 web 项目中创建并轻松集成到 asp.net 应用中去,和原来在 vs2003 中的 crystal report 有的一比,个人认为就创建中国式报表(用到 n 多表格),还是 ms 的报表方便,其表格处理方面较 crystal 方便的多,在 cs 代码中操作控制 reportviewer 的报表数据源填充,设置,报表的显示等和 crystal 都差不多,当然个人所用的报表都是一般的报表,并未涉及十分复杂专业的财务报表。
        ReportDataSource level1datasource  =   new
          ReportDataSource(
" DrillThroughDataSet_Show_OrderDetails " ,
          Level1DataSet.Tables[
0 ]);
        localreport.DataSources.Clear();
        localreport.DataSources.Add(level1datasource);
        localreport.Refresh();

Façade模式下session管理:

       文章参见Manage ASP.NET Session with Façade Pattern,直接用字符串作session key值是最不合理的做法,定义字符串常量(const)作为session key值是稍微改进的做法,在ruby中则方便了,用symbol ‘:string’,相同的字符串只有个symbol(即使多处定义)。在进一步的改进便是将const字符串定义于单独的static class中,当然最后就是用façade模式了。

Facade Session Sample

     另外,看到一篇介绍不用递归取给定串所有指定长度子串的很有新意的算法,这种算法主要就是将所有字串看为和唯一数字一一对应,然后从0遍历到‘指定’大小的数字,并同时将数字转成串,例如既定串为‘abcd’,则子串dac = 4*4!2+1*4!1+2*4!0,即将子串看作既定字符串长度进制的数字,前述dac就等于4('abcd'中第四位)乘以4(进制基数radix=4即既定串的长度)的2(3-1=2)次幂,加......,文章上源码如下:

BruteForce
测试示例

你可能感兴趣的:(reporting)