sharplife


software is a artwork, also make the life better !!!
  首页  :: 联系 :: 订阅 订阅  :: 管理

ReportingService及FacadeSession阅读

Posted on 2006-12-16 09:53  sharplife  阅读(580)  评论(0编辑  收藏  举报

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

Reporting Service:

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

       前些天在codeProject偶然看到一篇在asp.net中创建rdlc Drill-though报表并用msReportViewer服务器控件查看报表的文章,才晓得原来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
测试示例