• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    .NET中RDLC循环处理数据的应用分析
    当我们在使用RDLC开发报表的时候,如果数据源内容如下。
    复制代码 代码如下:

    private ListUserData> CreateDataSet()
    {
        ListUserData> userDataSet = new ListUserData>();
        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_jb51net点此下载。

    您可能感兴趣的文章:
    • asp.net中for和do循环语句用法分享
    • asp.net使用for循环实现Datalist的分列显示功能
    • asp.net for循环语句
    • ASP.NET MVC5网站开发之业务逻辑层的架构和基本功能 (四)
    • ASP.NET MVC5 网站开发框架模型、数据存储、业务逻辑(三)
    • asp.net运算符之逻辑运算符以及其他运算符介绍与实例
    • 详解.net循环、逻辑语句块(基础知识)
    上一篇:.NET中STAThread的使用详解
    下一篇:深入Lumisoft.NET组件开发碰到乱码等问题的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    .NET中RDLC循环处理数据的应用分析 .NET,中,RDLC,循环,处理,数据,