95992828九五至尊2

882828九五至尊手机版EasyUI的Web开发框架经验统计,在MVC项目中动用RDLC报表

二月 4th, 2019  |  882828九五至尊手机版

RDLC是一个没错的表格,有着相比不利的设计方式和突显效果,在自我的Winform开发里面,使用RDLC也是一个相比较便宜操作,如可以参考文章《DevExpress的XtraReport和微软RDLC报表的使用和相比较》或者《会员管理系列的陈设和支付(2)–
RDLC报表的筹划及动态加载
882828九五至尊手机版,》举行领会。可是依照MVC格局,怎么样打造和显示RDLC报表呢?本文首要介绍怎样在按照MVC4+EasyUI的Web开发框架上进展RDLC的集成和应用。

RDLC是一个不易的报表,有着比较不利的设计方式和表现效果,在我的Winform开发里面,使用RDLC也是一个相比较便宜操作,如可以参见文章《DevExpress的XtraReport和微软RDLC报表的选取和自查自纠》或者《会员管理种类的布署性和开销(2)–
RDLC报表的布置及动态加载
》进行精晓。然则按照MVC格局,如何打造和彰显RDLC报表呢?本文主要介绍怎样在按照MVC4+EasyUI的Web开发框架上进展RDLC的三合一和行使。
1、RDLC绑定数据源
RDLC的报表设计,是行使VS直接举办编辑的,由此它不管是在Web上,照旧在Winform上,设计的方式都大致,好像绑定数据源的形式有一些不一,WInform的可以接纳基于,而Web的只好按照数据库连接格局构建数据绑定对象。
它们两者之间在开创数据源的时候,弹出的对话框选拔界面如下所示,看起来Winform的措施接纳数据源的措施很多种化。

1、RDLC绑定数据源

RDLC的表格设计,是利用VS直接开展编制的,由此它不管是在Web上,仍然在Winform上,设计的法门都大概,好像绑定数据源的章程有某些见仁见智,WInform的可以拔取基于,而Web的只好根据数据库连接格局创设数据绑定对象。

它们两者之间在开立数据源的时候,弹出的对话框选拔界面如下所示,看起来Winform的办法接纳数据源的点子很七种化。

882828九五至尊手机版 1

882828九五至尊手机版 2

最终,通过Web方式营造了一个数据集,并在安插视图里面设计一个用户的报表界面,并绑定它们对应的字段,具体如下所示。

882828九五至尊手机版 3

在RDLC的统筹界面上,它们的操作内容相近是相同的,没有何不同,可以行使各样数学函数SUM、COUNT等,也足以动用对字段的表明式,格式样式等办法,从而有利于创设出部分确切、美观的表格,那部分可以参考文中初露的那两篇引用文章,那里就不再进行细节上的废话,因为它们是平等的。

882828九五至尊手机版 4

2、在Web界面上创建一些功能按钮和促成

我们在MVC项目里面,创设并保存好RDLC报表文件到相应的Report目录上,如下所示。

882828九五至尊手机版 5

然后创立一个视图,并在视图里面打造一些按钮,方便打造查询不一致的报表格式功效,具体效能如下所示。

882828九五至尊手机版 6

HTML代码如下所示

    <div style="padding:10px; border:1px solid black">
        <div>
            <a href="@Url.Action("UserRdlcReport", new { format = "Image" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">图片输出</a>
            <a href="@Url.Action("UserRdlcReport", new { format = "PDF" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'"> PDF输出</a>
            <a href="@Url.Action("UserRdlcReport", new { format = "Excel" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Excel输出</a>
            <a href="@Url.Action("UserRdlcReport", new { format = "Word" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Word输出</a>
        </div>
    </div>
    <div id="autoUpdate" style="display: none; overflow-y: auto" class="SlideContainer">
        <table width="100%" height="100%">
            <tr>
                <td>
                    <table>
                        <tr>
                            <td></td>
                            <td></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr><td><iframe id="myReport" width="100%" height="800"></iframe></td></tr>
        </table>
    </div>

落成那个布局后,大家还索要在对应的控制器里面,对RDLC的表格进行数据绑定并展现出来。

绑定RDLC报表,并赋值对应的数据源操作如下所示。

            LocalReport localReport = new LocalReport();
            localReport.ReportPath = Server.MapPath("~/Report/WHC.UserReport.rdlc");
            var dt = baseBLL.GetAll();

            ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);
            localReport.DataSources.Add(reportDataSource);

表现的操作代码如下所示,默许大家以图表进行突显。

            Warning[] warnings;
            string[] streams;
            byte[] renderedBytes;

            renderedBytes = localReport.Render(
                reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warnings);

            return File(renderedBytes, (format.ToLower() == "image") ? "image/jpeg" : mimeType);

最终默许可以看到图片的报表突显效果。

882828九五至尊手机版 7

理所当然,我们地点还有任何职能的操作,如PDF功效的显示,这一个是一个不利的格式展现,每页分的很好,假若在IE里面,会独自打开PDF文件;即使是Chrome浏览器,则会在浏览器里面平素打开,比较好。

882828九五至尊手机版 8

理所当然,Excel和Word就只能下载举办查看了,因为浏览器并不接济直接在上头举办预览查看的了,除非借助其余控件或者做法。

882828九五至尊手机版 9

3、图片内容的连接输出

大家询问RDLC的话,应该驾驭,一般RDLC报表,它都是经过一个DeviceInfo的音讯举行展现的,如下所示是一个正规的DeviceInfo对象。

            string deviceInfo =
            "<DeviceInfo>" +
            "  <OutputFormat>" + deviceType + "</OutputFormat>" +
            "  <PageWidth>8.5in</PageWidth>" +
            "  <PageHeight>11in</PageHeight>" +
            "  <MarginTop>0.5in</MarginTop>" +
            "  <MarginLeft>1in</MarginLeft>" +
            "  <MarginRight>1in</MarginRight>" +
            "  <MarginBottom>0.5in</MarginBottom>";

不过如此的内容,若是表现图片的话,就只会展现一页的情节,一般是800的万丈那规范,但是我的表格里面或者有成百上千记录,怎么样可以让它全体表现出来啊?

方式是一些,可是不是很周到,就是需求计算大致的尺寸,然后修改PageHeight的数值,让它动态的删减最大的记录,达到全体内容都可以出口看到。

为了达成这几个目的,我对图片格式输出的表格,对它的惊人举办了一个简单易行的盘算,然后换成它的正规化中度,那样代码如下所示。

            if(format.ToLower() == "image")
            {
                double inchValue = (dt.Count / 37.0) * 11; 
                deviceInfo += string.Format("  <PageHeight>{0}in</PageHeight>", inchValue);
            }
            else
            {
                deviceInfo += "  <PageHeight>11in</PageHeight>";
            }

终极界面代码如下所示。

882828九五至尊手机版 10

882828九五至尊手机版 11

 

末尾,通过Web格局创设了一个数据集,并在筹划视图里面设计一个用户的报表界面,并绑定它们对应的字段,具体如下所示。

882828九五至尊手机版 12

在RDLC的规划界面上,它们的操作内容相近是同样的,没有啥不相同,可以动用各个数学函数SUM、COUNT等,也足以动用对字段的表明式,格式样式等措施,从而利于营造出部分准确无误、美观的表格,那有些可以参考文中初露的那两篇引用小说,那里就不再举办细节上的废话,因为它们是平等的。
2、在Web界面上创制一些作用按钮和已毕
大家在MVC项目里面,创立并保存好RDLC报表文件到对应的Report目录上,如下所示。

882828九五至尊手机版 13

下一场创建一个视图,并在视图里面打造一些按钮,方便创设查询分歧的表格格式功能,具体功效如下所示。

882828九五至尊手机版 14

HTML代码如下所示

<div style="padding:10px; border:1px solid black">
<div>
    <a href="@Url.Action("UserRdlcReport", new { format = "Image" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">图片输出</a>
    <a href="@Url.Action("UserRdlcReport", new { format = "PDF" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'"> PDF输出</a>
    <a href="@Url.Action("UserRdlcReport", new { format = "Excel" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Excel输出</a>
    <a href="@Url.Action("UserRdlcReport", new { format = "Word" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Word输出</a>
</div>
</div>
<div id="autoUpdate" style="display: none; overflow-y: auto" class="SlideContainer">
<table width="100%" height="100%">
    <tr>
        <td>
            <table>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
            </table>
        </td>
    </tr>
    <tr><td><iframe id="myReport" width="100%" height="800"></iframe></td></tr>
</table>
</div>

姣好那几个布局后,我们还索要在相应的控制器里面,对RDLC的表格举办数量绑定并显现出来。
绑定RDLC报表,并赋值对应的数据源操作如下所示。

    LocalReport localReport = new LocalReport();
    localReport.ReportPath = Server.MapPath("~/Report/WHC.UserReport.rdlc");
    var dt = baseBLL.GetAll();

    ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);
    localReport.DataSources.Add(reportDataSource);

彰显的操作代码如下所示,默许大家以图片展开展现。

Warning[] warnings;
string[] streams;
byte[] renderedBytes;

renderedBytes = localReport.Render(
    reportType,
    deviceInfo,
    out mimeType,
    out encoding,
    out fileNameExtension,
    out streams,
    out warnings);

return File(renderedBytes, (format.ToLower() == "image") ? "image/jpeg" : mimeType);

最终默许可以看出图片的报表显示效果。

882828九五至尊手机版 15

理所当然,大家地点还有其余成效的操作,如PDF成效的展现,那个是一个不错的格式展现,每页分的很好,即使在IE里面,会独自打开PDF文件;假使是Chrome浏览器,则会在浏览器里面平素打开,相比较好。

882828九五至尊手机版 16

当然,Excel和Word就只可以下载举行查看了,因为浏览器并不援助直接在地方举办预览查看的了,除非借助任何控件或者做法。
3、图片内容的总是输出

大家询问RDLC的话,应该清楚,一般RDLC报表,它都是透过一个DeviceInfo的音讯进行突显的,如下所示是一个专业的DeviceInfo对象。

string deviceInfo =
"<DeviceInfo>" +
"  <OutputFormat>" + deviceType + "</OutputFormat>" +
"  <PageWidth>8.5in</PageWidth>" +
"  <PageHeight>11in</PageHeight>" +
"  <MarginTop>0.5in</MarginTop>" +
"  <MarginLeft>1in</MarginLeft>" +
"  <MarginRight>1in</MarginRight>" +
"  <MarginBottom>0.5in</MarginBottom>";

不过那样的情节,如果表现图片的话,就只会显得一页的始末,一般是800的万丈那样子,不过自己的表格里面或者有众多笔录,怎么着能够让它全部展现出来吗?
方法是部分,但是不是很周密,就是亟需统计大致的尺寸,然后修改PageHeight的数值,让它动态的删除最大的笔录,达到全部内容都能够输出看到。
为了实现那个目标,我对图片格式输出的表格,对它的可观举办了一个粗略的测算,然后换成它的专业中度,那样代码如下所示。

if(format.ToLower() == "image")
{
    double inchValue = (dt.Count / 37.0) * 11; 
    deviceInfo += string.Format("  <PageHeight>{0}in</PageHeight>", inchValue);
}
else
{
    deviceInfo += "  <PageHeight>11in</PageHeight>";
}

最后界面代码如下所示。

882828九五至尊手机版 17

882828九五至尊手机版 18

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图