.NET中RDLC循环处理数据的应用方法-创新互联

本篇内容介绍了“.NET中RDLC循环处理数据的应用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站是一家专业从事成都做网站、网站制作、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联建站依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

当我们在使用RDLC开发报表的时候,如果数据源内容如下。


复制代码 代码如下:


private List CreateDataSet()
{
    List userDataSet = new List();
    userDataSet.Add(new UserData() { Name = "Clark", Age = 18 });
    userDataSet.Add(new UserData() { Name = "Yaya", Age = 15 });
    return userDataSet;
}


我们可以很快速的使用RDLC里的数据表控件,来将数据呈现在报表上。

.NET中RDLC循环处理数据的应用方法

但是当客户要求下图的报表,要将数据源内容显示在一行。RDLC处理这种需求就没有那么简单,这是因为RDLC没有循环处理的函式可以使用。造成开发人员要组合数据,必须使用隐藏列表、在外部组合字符串…等等迂回的方式建立报表内容。但这样的方式开发,既没有效率而且也有很多的限制。

.NET中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的文本框里,已经正确的显示了客户要求的数据格式。


.NET中RDLC循环处理数据的应用方法

“.NET中RDLC循环处理数据的应用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


网站名称:.NET中RDLC循环处理数据的应用方法-创新互联
本文URL:http://cdiso.cn/article/ehgcd.html

其他资讯