新普金娱乐网址


记:二零一八年元月几本书的读后感

数学冰花男孩,你让自身情何以堪!

根据MVC4+EasyUI的Web开发框架经验总括(15)–在MVC项目中动用RDLC报表

  • 二月 08, 2019
  • 数学
  • 没有评论

作者 魏楷聪 发布于 2015年01月20日

1、RDLC绑定数据源

RDLC的表格设计,是行使VS直接开展编制的,由此它不管是在Web上,仍旧在Winform上,设计的章程都大概,好像绑定数据源的措施有几许两样,WInform的可以拔取基于,而Web的只好依照数据库连接格局营造数据绑定对象。

它们两者之间在创设数据源的时候,弹出的对话框选取界面如下所示,看起来Winform的主意选取数据源的主意很七种化。

数学 1

数学 2

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

数学 3

在RDLC的部署性界面上,它们的操作内容相近是千篇一律的,没有怎么不一样,可以动用种种数学函数SUM、COUNT等,也得以动用对字段的表达式,格式样式等措施,从而利于打造出部分准确无误、雅观的表格,那有些能够参考文中开首的那两篇引用文章,那里就不再举行细节上的废话,因为它们是一样的。

> JavaScript的焦点ECMAScript描述了该语言的语法和基本对象

ECMAScript是一个首要的正规化,但它并不是JavaScript唯一的片段,当然,也不是绝无仅有被规范的一部分。

ECMAScript描述了以下内容:a. 语法; b. 类型; c. 语句; d. 关键字; e.
保留字; f. 运算符; g. 对象。

ECMAScript仅仅是一个叙述,定义了脚本语言的装有属性、方法和对象。其余的言语可以兑现ECMAScript来作为职能的尺度,JavaScript就是那样。

ECMAScript并不与其它具体浏览器相绑定,实际上,它也没有涉嫌任何用户输入输出的措施。每个浏览器都有它自己的ECMAScript接口的落成,然后这一个落成又被增加,包罗了DOM和BOM。

RDLC是一个没错的报表,有着相比较不利的设计方式和表现效果,在自我的Winform开发里面,使用RDLC也是一个比较便宜操作,如可以参考小说《DevExpress的XtraReport和微软RDLC报表的施用和相比》或者《会员管理体系的规划和支付(2)–
RDLC报表的规划及动态加载
》举行问询。可是按照MVC格局,怎么样创设和显示RDLC报表呢?本文首要介绍怎么样在按照MVC4+EasyUI的Web开发框架上开展RDLC的合龙和动用。

一个完好无损的JavaScript完结是由以下3个不等部分构成的:

a. 要旨(ECMAScript)   b. 文档对象模型(DOM)   c.
浏览器对象模型(BOM)

2、在Web界面上创建一些效应按钮和落到实处

大家在MVC项目里面,创立并保留好RDLC报表文件到对应的Report目录上,如下所示。

数学 4

下一场创制一个视图,并在视图里面创设一些按钮,方便营造查询区其他表格格式功能,具体职能如下所示。

数学 5

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);

最后默许可以看来图片的报表展现效果。

数学 6

理所当然,大家地点还有其他成效的操作,如PDF成效的展现,那个是一个不利的格式显示,每页分的很好,倘诺在IE里面,会单独打开PDF文件;若是是Chrome浏览器,则会在浏览器里面一贯打开,比较好。

数学 7

当然,Excel和Word就不得不下载举办查看了,因为浏览器并不协助直接在上头进行预览查看的了,除非借助任何控件或者做法。

1. 原始值和引用值

在ECMAScript中,变量可以存放两连串型的值,即原始值和引用值。

a. 原始值(primitive
value)是储存在栈(stack)中的容易数据段,也就是说,它们的值直接存储在变量访问的地方。

b. 引用值(reference
value)是储存放在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

原始类型占据的半空中是定位的,将它们存储在较小的内存区域中——栈中,便于急速查询变量的值。

数学,引用类型的存储空间将从堆中分红。由于引用值的大小会改变,所以不可以把它放在栈中,否则会下跌变量查寻的快慢。相反,放在变量的栈空间中的值是该目的存储在堆中的地址。地址的轻重是稳定的,所以把它存储在栈中对变量品质无任何负面影响。

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>";
            }

终极界面代码如下所示。

数学 8

数学 9

 

2. 转换

> 简单的转换方法

  1. 转换成字符串

3种重点的原始值Boolean值、数字和字符串都是伪对象,都有toString()方法,可以把它们的值转换成字符串。

Boolean型的toString()方法只是出口“true”或“false”,结果由变量的值决定。

Number类型的toString()方法有三种情势,即默许格局和基形式。

在默许情势中,再次回到的都是数字的十进制表示。

在基情势中,可以用不相同的基输出数字。

var iNum1 = 10;

alert(iNum1.toString(2));  // outputs “1010”

alert(iNum1.toString(8));  // outputs “12”

alert(iNum1.toString(16));  // outputs “A”

HTML拔取十六进制数表示每种颜色,在HTML中拍卖数字时那种成效至极有效。

  1. 转换成数字,只转换第四个不算字符以前的字符串

parseInt():

var iNum1 = parseInt(“1234blue”);  // return 1234

var iNum2 = parseInt(“0xA”);  // return 10

var iNum3 = parseInt(“22.5”);  // return 22

var iNum4 = parseInt(“blue”);  // return NaN

parseInt()方法的基形式:

var iNum1 = parseInt(“AF”, 16);  // return 175

var iNum2 = parseInt(“10”, 2);  // return 2

var iNum3 = parseInt(“10”, 8);  // return 8

var iNum4 = parseInt(“10”, 10);  // return 10

假诺十进制数包蕴前导0,那么最好使用基数10,那样才不会意外地获取八进制的值。

parseFloat():

var iNum1 = parseFloat(“1234blue”);  // return 1234

var iNum2 = parseFloat(“0xA”);  // return 0

var iNum3 = parseFloat(“22.5”);  // return 22.5

var iNum4 = parseFloat(“22.34.5”);  // return 22.34

var iNum5 = parseFloat(“0908”);  // return 908

var iNum6 = parseFloat(“blue”);  // return NaN

UndefinedNullBooleanNumberString

  1. 可以用 typeof  运算符来判断一个变量是属于哪类档次:

“undefined”,变量是Undefined型

“boolean”,变量是Boolean型

“number”,变量是Number型

“string”,变量是String型

“object”,变量是一种引用类型或 Null 类型

  1. Undefined 类型

唯有一个值,即undefined(字面量)。当表明的变量未初叶化时,该变量的默许值是undefined。可是,值undefined并分裂于未定义的值,而typeof运算符并不确实区分这三种值。

var oTemp;

// make sure this variable isn’t defind

// var oTemp2;

alert(typeof oTemp); // outputs “undefined”

alert(typeof oTemp2); // outputs “undefined”

alert(oTemp2 == undefined); // cause error

对未定义的oTemp2使用除了typeof之外任何运算符,将唤起错误,因为那多少个运算符只好用于已定义的变量。

当函数无显然再次回到值时,再次回到的值也是值undefined。

  1. Null 类型

唯有一个值,即null(字面量)。用于表示没有存在的对象。

值undefined实际上是从值null派生来的。

alert(null == undefined);  // outputs “true”

  1. Boolean 类型

有四个值true和false(即多少个Boolean字面量)。

  1. Number 类型

既可以表示32位的平头,还足以象征64位的浮点数。直接输入的(而不是从另一个变量访问的)任何数字都被看成Number型的字面量。

平头能够被代表为八进制或十六进制的字面量,但拥有数学运算再次来到的都是十进制结果

浮点数字面量必须概括小数点和小数点后的一位数字,用它举办计算前,真正存储的是字符串

一个差异平时值:NaN,表示非数(Not a Number)。

alert(isNaN(“blue”)); // outputs “true”

alert(isNaN(“123”)); // outputs “false”

  1. String 类型

String类型的极度之处在于,它是绝无仅有没有一定大小的原始类型。字符串字面量是由双引号(”)或单引号(’)注解的。

> DOM描述了拍卖网页内容的不二法门和接口

DOM(文档对象模型)是HTML和XML的应用程序接口(API)。DOM将把方方面面页面规划成由节点层级构成的文档。HTML或XML页面的各样部分都是一个节点的衍生物。

DOM通过创办树来表示文档,从而使开发者对文档的始末和布局有所划时代的控制力。用DOM
API可以轻松地删除、添加和替换节点。

3. 函数

函数是ECMAScript的中央。函数(function)就是目的。

一经函数无明确的重返值,或调用了未曾子舆数的return语句,那么它实在重临的值是undefined。

  1. 无重载:ECMAScript中的函数无法重载,没有艺术(函数)重载的定义。

  2. arguments对象:每个函数都有一个含有的对象
    arguments,表示给函数实际传递的参数

  3. Function类:所有自定义的函数都是Function 对象类型的。Function
    对象收取的有所参数都是字符串类型的,其中最终一个参数就是要实施的函数体,而眼前的参数则是函数真正需求吸收的参数。

每一个函数对象都有一个 length
属性,表示该函数期望接收的参数格式。它与函数的 arguments
不相同,arguments.length 代表函数实际收到的参数格式。

Function对象也有与富有目的共享的正规valueOf()方法和toString()方法。那五个章程重返的都是函数的源代码,在调试时越发有用。

  1. 闭包

所谓闭包,是指词法表示包涵不必总括的变量的函数,也就是说,该函数能选取函数外定义的变量。

(完)

> 强制类型转换(type casting)

  1. Boolean(value):把给定的值转换成Boolean型

当要更换的值是最少有一个字符的字符串非0数字对象时,Boolean()函数将重返true。若是该值是空字符串数字0undefinednull,它将回到false。

var b1 = Boolean(“”);  // false – empty string

var b2 = Boolean(“hi”);  // true – non-empty string

var b3 = Boolean(100);  // true – non-zero string

var b4 = Boolean(null);  // false – null

var b5 = Boolean(0);  // false – zero

var b6 = Boolean(new Object());  // true – object

Number(value):把给定的值转换成数字(能够是整数或浮点数),转换的是所有值

var n1 = Number(false);  // 0

var n2 = Number(true);  // 1

var n3 = Number(undefined);  // NaN

var n4 = Number(null);  // 0

var n5 = Number(“5.5”);  // 5.5

var n6 = Number(“56”);  // 56

var n7 = Number(“5.6.7”);  // NaN

var n8 = Number(new Object());  // NaN

var n9 = Number(100);  // 100

String(value):把给定的值(任何值)转换成字符串

强制转换成字符串和调用toString()方法的绝无仅有差异之处在于,对null或undefined值强制类型转换可以生成字符串而不吸引错误:

var s1 = String(null);  // “null”

var oNull = null;

var s2 = oNull.toString();  // won’t work, causes an error

> (重点)五大原始类型(primitive type):

> BOM描述了与浏览器举行互动的主意和接口

BOM(浏览器对象模型),可以对浏览器窗口进行走访和操作。使用BOM,开发者可以移动窗口、改变状态栏中的文本以及实践别的与页面内容不直接相关的动作。BOM只是JavaScript达成的一部分,没有其余相关的规范。由于尚未相关的BOM标准,每种浏览器都有谈得来的BOM完成。

> 四大引用类型:Object类Boolean类Number类String类

引用来型平日叫作类(class),也就是说,遭逢引用值时,所拍卖的就是目标。ECMAScript定义了“对象定义”,逻辑上等价于别的程序设计语言中的类。

富有极度的原始类型的引用类型:

  1. Object

Object类自身用处不大,但ECMAScript中的所有类都由那些类继承而来,Object类中的所有属性和格局都会并发在其余类中。

属性
prototype:对该对象的靶子原型的引用(指针)。对于Object类,该指针指向原始的object()函数。

措施
prototypeIsEnumerable(property):判断给定的习性是不是足以用for…in语句举办枚举。

  1. Boolean

Boolean类是Boolean原始类型的引用类型。

Boolean对象将覆盖object类的valueOf()方法,重返原始值,即true或false。toString()方法也会被遮盖,再次回到字符串“true”或”false”。

提出少用Boolean对象,最好依然选择Boolean原始值。

// 在Boolean表明式中,所有目标都会被活动转换为true

var oFlaseObject = new Boolean(false);

var bResult = oFlaseObject && true;  // outputs true

  1. Number

创办Number对象并获取数字对象的Number原始值(valueOf()方法):

var oNumberObject = new Number(55);

var iNumber = oNumberObject.valueOf();

toFixed()方法再次回到的是兼备指定位数小数的数字的字符串表示:

var oNumberObject = new Number(99);

alert(oNumberObject.toFixed(2));  // outputs “99.00”

此地,toFixed()方法的参数是2,表达了应有显得几位小数,空的小数位由0补充。toFixed()方法能表示具有0到20位小数的数字,超出这些限制的值会引起错误。

只要可能,都应用数字的原始表示法。

  1. String

String类是String原始类型的对象表示法。

String对象的valueOf()方法和toString()方法都会回去String类型的原始值:

var oStringObject = new String(“hello world”);

alert(oStringObject.valueOf() == oStringObject.toString());  //
outputs “true”

String类具有属性length,它是字符串中的字符个数:

var oStringObject = new String(“hello world”);

alert(oStringObject.length);  // outputs “11”

String类还有大量的方法,可以查看API。

  1. instanceof 运算符

instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不一样的是,instanceof方法须求开发者明确地肯定对象为某一定项目。

var oStringObject = new String(“hello world”);

alert(oStringObject instanceof String);  // outputs “true”

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图