asp.net使用asp 水晶报表表,插入网页后运行网站,页面显示一片空白,怎么破?

ASP.NET中水晶报表的使用
在我们对VS.Net中的水晶报表(CrystalReports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍。这篇文章教你如何在.NetWeb应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Net的开发经验。简介水晶报表可以由很多的方法得到,其中一个就是使用VS.Net来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用VS.Net开发.Net程序,那么你就不需要再安装其它软件了,因为他已经内嵌在VS.Net中了。优点:VS.Net水晶报表有下面一些主要的优点:快速的报表开发能够导出成为复杂的交互性图表可以与其它控件一起在WebForm中使用能够动态地将报表导出成为.pdf,.doc,xls,html,rtf等多种格式结构:一些组件组成了水晶报表的二层结构,需要的Web应用有:客户端:客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了服务器:水晶报表引擎(CrystalReportEngine(CREngine.dll))通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将Asp.Net中的水晶报表转换成为普通HTML格式水晶报表设计器(CrystalReportDesigner(CRDesigner.dll))水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。.rpt报表文件执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的.rpt例子。DataSource.rpt文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装DataSet,然后再将其传送到报表文件。水晶报表查看控件(CrystalReportViewerwebformControl(CRWebFormViewer.dll))水晶报表查看控件是一个WebForm控件,可以将它看成是一个在.aspx页面中存放报表的容器。注意:在一些复杂的操作中,报表服务器与Web服务器可能不在同一物理主机上,Web服务器将HTTP请求传送到报表服务器上去。水晶报表也可以当做WebService来执行。执行模式水晶报表取数据可以使用下面的方法实现:Pull模式:被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据。Push模式:此时开发表不得不自己编写代码连接数据并组装DataSet,同时将它传送至报表。在些这种情况下,通过使用连接共享以及限制记录集合的大小,可以使用报表性能最大化。报表类型:水晶报表设计器能够直接包含报表至工程也能够使用独立的报表对象。Strongly-typed报表:当你将报表文件加入到项目中去时,它就变成了一个了“strongly-typed“报表。在这些情况下,你将拥有直接创建报表的对象的权力,这将减少一些代码并且能够提供一些性能。Un-Typed报表:这里的报表并不直接包含在项目中,因此称为‘un-typed’报表。在这种情况下,你不得不使用水晶报表的”ReportDocuemt“对象建立一个实例,并且”手动“地凋用报表。其它注意事项尽管水晶报表查看器拥有一些很酷的功能,如缩放、页面导航等。但是他不提供打印功能,你不得不调用游览器的打印功能。VS.Net中的水晶报表如果没有注册,那么它只能使用30次,30次后,”保存“功能就不能再使用了。为了避免这个,你不是不在/这里注册此产品。(好像不是这样子的,不注册也好像能用很长的时间,只是不能提供支持)默认安装的水晶报表只能支持5个用户,为了支持更多的用户,你不得不在/中购买许可证。让我们感受一下----在Asp.net中使用一个现成的水晶报表文件让我们先感受一下在WebForm中使用水晶报表的感觉。1)从WebForm工具栏中拖动水晶报表查看器控件(CrystalReportViewer)至.aspx页面中。2)调出水晶报表查看器控件的属性窗口 3)点击[...]按钮查看"DataBinding"属性,并弹出了DataBinding窗口。4)从左边的"Bindable属性”区中选择“ReportSource”5)选中"自定义绑定表达式"单选按钮,在右边的底部的窗口中指定.rpt文件的文件名和路径,例如:"C:\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt",然后”确定“注意:文件”WorldSalesReport.rpt“文件是在VS.Net安装时创建的。如果你在安装过程中指定了其它目录,此时你最好确认一下路径的正确性。上面的步骤中实际上是插入了下面这些代码至Asp.Net文件中:<%@RegisterTagPrefix="cr"Namespace="CrystalDecisions.Web"Assembly="CrystalDecisions.Web"%>以及:<CR:CRYSTALREPORTVIEWER>id="CrystalReportViewer1"runat="server"Width="350px"Height="50px"ReportSource='<%#"C:\\ProgramFiles\\MicrosoftVisualStudio.NET\\CrystalReports\\Samples\\Reports\\GeneralBusiness\\WorldSalesReport.rpt"%>'></CR:CRYSTALREPORTVIEWER>注意:在飞刀我的VS.Net正式版中自动生成的代码中ReportSource产生的样式不是这样子的,它是:ReportSource="<%#C:\xxxxx\xxx.rpt%>"这样是错误的,会出现错误信息,有两处错误:DataBind中要有双引号,因此外部只能用单引号目录分隔符号不能使用"\",必须使用"\\"必须按照使用本文介绍的格式来手动修改,这也算是VS.Net的一个Bug吧。6)在Page_Load方法中调用DataBind方法。(代码为VB.Net)PrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)DataBind()EndSub7)保存并编译你的页面。现在,你就有一个内嵌水晶报表的WebForm页面了。注意:实际开发中,一开始会出现无法访问inetsrv目录的错误,解决的办法是改变其目录的安全属性,使User用户有可写的权限。飞刀我发现.Net系统自已给出的解决方法是没有用的,也可能是我使用的是Windows.Net操作系统的原因。
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章
seajs.config({
base: "/resource/passapi/scripts/"
seajs.use('seajs/seajs-css');
seajs.use(['artdialog/src/dialog-plus'], function (dialog) {
$('#favorite').on('click', function(){
$.getJSON('/passapi.php?op=userstatus&callback=?', function(data){
if (data.status == 1) {
var _this = $('#favorite').find('span');
$.getJSON('/?app=favorite&controller=favorite&action=add&jsoncallback=?&contentid='+contentid, function(json){
if(json.state){
_this.html('怎么样实现水晶报表动态列打印,以及用什么插件来实现页面显示word文档的内容-.NET技术/ASP.NET-asp.net-电脑编程网怎么样实现水晶报表动态列打印,以及用什么插件来实现页面显示word文档的内容-.NET技术/ASP.NET作者:sun 和相关&&1、在查询报表的时候,根据查询条件,查询出来的列可能为5列或者10列 等等,打印的时候怎么样动态打印列。最好有源码发过来一份,将不胜感激!2、上传word文档成功后,页面需要立刻呈现出word的内容,用什么插件来实现呢!最好有源码发过来一份,将不胜感激!------回答---------------其他回答(100分)---------
sf,up
相关资料:|||||||怎么样实现水晶报表动态列打印,以及用什么插件来实现页面显示word文档的内容-.NET技术/ASP.NET来源网络,如有侵权请告知,即处理!编程Tags:                &                    页面导航:
→ 正文内容 asp.net 网页跳转
asp.net(c#)网页跳转七种方法小结
在asp.net下,经常需要页面的跳转,下面是具体的几种方法。跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute server.transfer 三种页面跳转的方法
①response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session。 实例 Example that uses Redirect [C#; ASP.NET]
代码如下: using S using System.Web.UI; namespace WebApplication1 { public partial class List : Page { protected void Page_Load(object sender, EventArgs e) { // Get response. var response = base.R // Redirect temporarily. // ... Don't throw an HttpException to terminate. response.Redirect("http://www.jb51.net", false); } } }
Result of the page
代码如下: HTTP/1.1 302 Found Content-Type: text/ charset=utf-8 Location: http://www.jb51.net Server: Microsoft-IIS/7.0 Date: Fri, 13 Aug :34 GMT Content-Length: 144 &html&&head&&title&Object moved&/title&&/head&&body& &h2&Object moved to &a href="/list"&here&/a&.&/h2& &/body&&/html&
②sever.execute 这个方法主要是用在页面设计上面,而且他必须是跳转同一站点下的页面。这个方法是需要将一个页面的输出结果插入到另一个aspx页面的时候使用,大部分是在表格中,将某一个页面类似于嵌套的方式存在于另一页面。 举个例子看看: 1、创建一个web form 2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2 3、为button按钮创建click事件 代码如下:
代码如下: private void Button1_Click (object sender, System.EventArgs e) { Server.Transfer("webform2.aspx"); }
4、创建过程来返回TextBox1,TextBox2控件的值代码如下:
代码如下: public string Name { get { return TextBox1.T } } public string EMail { get { return TextBox2.T } }
5、新建一个目标页面命名为webform2 6、在webform2中放置两个Label1,Label2 在webform2的Page_Load中添加如下代码:
代码如下: private void Page_Load (object sender, System.EventArgs e) { //创建原始窗体的实例 WebForm1 wf1; //获得实例化的句柄 wf1=(WebForm1)Context.H Label1.Text=wf1.N Label2.Text=wf1.EM }
③server.transfer 速度快,只需要一次postback ,但是。。。。他必须是在同一个站点下,因为它是server的一个方法。另外,他能跳过登录保护。你可以写个小程序试试:设计一个由页面一到页面二的跳转,但要进入到页面二需要登录,form认证,但如果跳转语句使用transfer的话,那就不会弹出登录页面了。这个方法的重定向请求是发生在服务器端,所以浏览器的url地址仍然保留的是原页面的地址!
代码如下: &%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm1.aspx.cs" Inherits="WebForm1" %& &!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"& &html xmlns="http://www.w3.org/1999/xhtml"& &head runat="server"& &title&&/title& &/head& &body& &form id="form1" runat="server"& &div& &asp:TextBox ID="TextBox1" runat="server"&&/asp:TextBox&&br /& &asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /& &/div& &/form& &/body& &/html& .net代码 using S using System.Collections.G using System.L using System.W using System.Web.UI; using System.Web.UI.WebC public partial class WebForm1 : System.Web.UI.Page { public string Time { get { return DateTime.Now.ToString(); } } public string TestFun() { return "Function of WebForm1 Called"; } protected void Page_Load(object sender, EventArgs e) { Context.Items.Add("Context", "Context from Form1"); } protected void Button1_Click(object sender, EventArgs e) { //this.TextBox2.Text =Request ["TextBox1"].ToString (); Server.Transfer("WebForm2.aspx", true);//第二个参数为false时,WebForm2.aspx中不能获得TextBox1的内容 } }
总结: 如果要捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置,则使用Server.Execute。 ?如果要确保HTML输出合法,请使用Response.Redirect,因为Server.Execute 或者Server.Transfer方法返回给客户端的页面包含多个&Html&&body&标记,不是合法的HTML页面,在非IE浏览器中可能会发生错误。 1.Response.Redirect("http://www.jb51.net",false); 目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。 跳转向新的页面,原窗口被代替。" 浏览器中的URL为新路径。 :Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了 状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。这就是说, 使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求, 得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。 2.Server.Transfer("Default2.aspx?name=zhangsan",true); 目标页面和原页面可以在同一个服务器上。 跳转向新的页面,原窗口被代替。 波球论坛 浏览器中的URL为原路径不变。 默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成 Tb310True,就可以保留第一个页面的表单数据和查询字符串。 同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查b310,,博球,博球网,行家心水,赛事推荐,赛事分析,资料库,足球赛事,篮球,NBA,赔率,比分,篮球数据,足球数据. (Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合, 必须把目标页面Page指令的EnableViewStateMac属性设置成False。 3.Server.Execute("Default5.aspx?address=beijing); 目标页面和原页面可以在同一个服务器上。 跳转向新的页面,再跳转会原页面。 浏览器中的URL为原路径不变。 当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。 这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把 被调用页面Page指令的EnableViewStateMac属性设置成False。 4.Response.Write("&script language='javascript'&window.open('aaa.aspx');&/script&");_ 目标页面和原页面可以在2个服务器上,可输入网址或相对路径。 原窗口保留,另外新增一个新页面。 5.Response.Write("&script language='javascript'&window.location='Default2.aspx'&/script&"); 打开新的页面,原窗口被代替。 6.Response.Write("&script&window.showModalDialog('Default2.aspx')&/script&"); 7.Response.Write("&script&window.showModelessDialog('Default2.aspx')&/script&"); (一)、showModalDialog和showModelessDialog有什么不同?  showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。b310,,博球,博球网,行家心水,赛事推荐,赛事分析,资料库,足球赛事,篮球,NBA,赔率,比分,篮球数据,足球数据   showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P) (二)、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?  在被打开的网页里加上&base target="_self"&就可以了。这句话一般是放在&html&和&body&之间的
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ASP.NET 水晶报表的使用实例_追逐_
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 asp.net mvc 水晶报表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信