美文网首页.NET
RDLC系列(一)ASP.NET RDLC 报表自定义数据源

RDLC系列(一)ASP.NET RDLC 报表自定义数据源

作者: 疯子哦 | 来源:发表于2017-02-27 13:41 被阅读28次

    最近一段时间开发ERP系统中要用到不少报表打印,在网上找了一圈发现想些好用的报表控件大部分要收费,一些面免费要么不好用要么IE8不兼容,最后还是用了微软自带的RDLC报表,把自己遇到的坑和技巧整理分享出来。

    一般Visaul Studio上新建的的EDLC报表文件之后数据源都是按照向导直接连接数据库,自动生成数据源和数据集的,但是遇到一些复杂的就不够灵活。

    一、新建报表

    1.新建一个空白的报表如下

    2.打开新建好的空报表文件,选择报表文件右键选择【打开方式】→【XML(文本)编辑】打开 在Page节点下面添加DataSources 和DataSets 节点

    1)空报表文件

    2)添加节点后

    DataSources:数据源名称标签,每次加一个新的数据源需要在 DataSources 标签下新标签DataSource

    DataSets:数据实体集合,每次新添加一个数据源后在DataSets 对应添加新的DataSet节点,DataSourceName和DataSetName 要和DataSource 的Name 名称一致。Fields 下面是添加每个实体对应的字段

    3.报表DataSource和DataSet建好后可以看到刚才添加的数据源和数据集

    4.设计好需要额报表,填充刚才数据集里对应的字段

    5.后台数据源赋值代码

    publicActionResult PrintProduct()

    {stringreportPath = Server.MapPath("~/Reports/订单信息.rdlc");varlocalReport =newLocalReport { ReportPath =reportPath };

    List productOrders =newList();for(inti =0; i <20; i++)

    {

    ProductOrder productOrder=newProductOrder

    {

    SKUDetail= $"A00300000{i}",

    Quantity=i,

    DeliveryDate= DateTime.Now.AddDays(i).ToString("yyyy-MM-dd HH:mm:ss"),

    DeliveryDateActual= DateTime.Now.AddDays(i+1).ToString("yyyy-MM-dd HH:mm:ss")

    };

    productOrders.Add(productOrder);

    }vardataSource =newReportDataSource("ProductOrderDs", productOrders);

    localReport.DataSources.Add(dataSource);vartype ="PDF";stringreportType =type;stringmimeType;stringencoding;stringfileNameExtension;vardeviceInfo = $"{type}";

    Warning[] warnings;string[] streams;varrenderedBytes =localReport.Render(

    reportType,

    deviceInfo,outmimeType,outencoding,outfileNameExtension,outstreams,outwarnings);returnFile(renderedBytes, mimeType);

    }

    实体代码:

    publicclassProductOrder

    {publicGuid ProductOrderId {get;set; }publicstringSKUDetail {get;set; }publicintQuantity {get;set; }publicstringDeliveryDate {get;set; }publicstringDeliveryDateActual {get;set; }publicstringBak {get;set; }

    }

    注意:报表文件DataSet中的用到的字段必须和实体字段对应,代码中DataSource 中名字必须和报表中的一样

    最后预览如下:

    出处:乐学网

    相关文章

      网友评论

        本文标题:RDLC系列(一)ASP.NET RDLC 报表自定义数据源

        本文链接:https://www.haomeiwen.com/subject/ltszwttx.html