[.NET] RDLC循环处理数据
2012-07-19 14:08
183 查看
当我们在使用RDLC开发报表的时候,如果数据源内容如下。
我们可以很快速的使用RDLC里的数据表控件,来将数据呈现在报表上。
但是当客户要求下图的报表,要将数据源内容显示在一行。RDLC处理这种需求就没有那么简单,这是因为RDLC没有循环处理的函式可以使用。造成开发人员要组合数据,必须使用隐藏列表、在外部组合字符串…等等迂回的方式建立报表内容。但这样的方式开发,既没有效率而且也有很多的限制。
这个问题困扰了我好几天,昨晚睡到一半忽然有灵感。可以使用RDLC里的Sum函式,来做数据循环的处理。
Sum函式会取得数据集中的每一笔资料,并且计算出全部数据的总和。我们可以将表达式写为下列的函式,利用code.PushStringStack这个RDLC自定义函式,来让Sum函式取得所有数据。这样的写法,就可以将数据集中的每一笔数据都交由code.PushString处理过一次。
接着看code.PushString这个RDLC自定义函式的内部,使用了一个Static的字符串变量,来记录每一笔数据处理之后的结果。到这边开发人员应该可以理解,这样的方式就是在跑循环处理数据。
当然啦,跑完循环处理完数据,最终还是要将数据显示在画面上。这边很简单的就是建立一个code.PopString回传。
并且将原本的表达式改写成为:
编译并且执行之后,就可以看到在RDLC的文本框里,已经正确的显示了客户要求的数据格式。
范例程序 : RdlcForeachDataSample点此下载。
(为了方便说明思路,简化了设计。开发人员应依照实际情景建立实作。)
private List<UserData> CreateDataSet() { List<UserData> userDataSet = new List<UserData>(); userDataSet.Add(new UserData() { Name = "Clark", Age = 18 }); userDataSet.Add(new UserData() { Name = "Yaya", Age = 15 }); return userDataSet; }
我们可以很快速的使用RDLC里的数据表控件,来将数据呈现在报表上。
但是当客户要求下图的报表,要将数据源内容显示在一行。RDLC处理这种需求就没有那么简单,这是因为RDLC没有循环处理的函式可以使用。造成开发人员要组合数据,必须使用隐藏列表、在外部组合字符串…等等迂回的方式建立报表内容。但这样的方式开发,既没有效率而且也有很多的限制。
这个问题困扰了我好几天,昨晚睡到一半忽然有灵感。可以使用RDLC里的Sum函式,来做数据循环的处理。
Sum函式会取得数据集中的每一笔资料,并且计算出全部数据的总和。我们可以将表达式写为下列的函式,利用code.PushStringStack这个RDLC自定义函式,来让Sum函式取得所有数据。这样的写法,就可以将数据集中的每一笔数据都交由code.PushString处理过一次。
=Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet")
接着看code.PushString这个RDLC自定义函式的内部,使用了一个Static的字符串变量,来记录每一笔数据处理之后的结果。到这边开发人员应该可以理解,这样的方式就是在跑循环处理数据。
Public Shared _foreachResult As String = String.Empty Public Shared Function PushString(userName As String, userAge As String) As Integer _foreachResult += userName & "(" & userAge & "), " Return 0 End Function
当然啦,跑完循环处理完数据,最终还是要将数据显示在画面上。这边很简单的就是建立一个code.PopString回传。
Public Shared Function PopString() As String Return _foreachResult End Function
并且将原本的表达式改写成为:
=IIF(Sum(code.PushString(Fields!Name.Value, Fields!Age.Value), "UserDataSet") <> 0, "", code.PopString())
编译并且执行之后,就可以看到在RDLC的文本框里,已经正确的显示了客户要求的数据格式。
范例程序 : RdlcForeachDataSample点此下载。
(为了方便说明思路,简化了设计。开发人员应依照实际情景建立实作。)
相关文章推荐
- [.NET] RDLC循环处理数据
- .NET中RDLC循环处理数据的应用分析
- .NET中RDLC循环处理数据的应用分析
- sql 2005 循环处理数据
- jQuery备忘之(一):jQuery处理.Net后台返回的Xml格式与Json格式的数据的比较分析
- SSIS中Foreach循环容器处理XML数据
- 组合数据的输出(二)循环处理
- 用.NET 2.0压缩/解压功能处理大型数据
- sql server 使用循环和临时表处理数据 而不用游标
- 树形结构数据后台处理:一次循环生成树
- 树形此博文包含图片结构数据后台处理:一次循环生成树
- SQL SERVER2000教程-第五章 处理数据 第二十节 使用GOTO进行循环求和
- .net处理页面的抓取数据
- 循环处理数据提交
- (转:Tonny Yang)jQuery备忘之(一):jQuery处理.Net后台返回的Xml格式与Json格式的数据的比较分析
- .net下跨数据分布式事务的处理办法TransactionScope
- sql中循环处理当前行数据和上一行数据相加减
- sqlserver用当前行减去前一行的数据的简单处理方法 -- 不使用循环
- 树形结构数据后台处理:一次循环生成树
- linux shell 读取for循环中出现难处理的数据之单引号错误实例