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

Asp.Net中水晶报表的简单使用基础教程
Crystal Reports是具有强大内容创建和集成功能的高效的报表技术,是第三方开发的报表工具,水晶报表我们可以更好地向用户展示数据。以前可以通过编程的方式将数据集中的数据进行处理后在windows应用程序或web应用程序中输出显示,但如果要做超出了基本格式化的一些工作如:求和、平均、多极汇总、制作图标等就会显得比较复杂,而水晶报表正好弥补了其中的不足。
在windows应用程序和web应用程序中我们都可以使用水晶报表,不过在windows应用程序中的水晶报表要比web应用程序中的功能强大,可以很容易地实现打印和导出功能。在这儿只讨论一下在asp.net中水晶报表的一些简单使用。
在asp.net中使用水晶报表专家,可以很快速地创建报表,虽然水晶报表是第三方开发的,但在vs2003中水晶报表已经成为了开发环境的一个组成部分。先做一个很简单的小例子。新建一个web应用程序,在页面上添加工具箱中web窗体下的Button控件,CrystalReportViewer控件(这个就是水晶报表控件)和html下的File Field控件。File Field控件可以让我们从本地选择一个文件,要想实现水晶报表的显示我们首先需要一个水晶报表文件,该文件的后缀为rpt,这个文件可以通过添加新项添加。现在假设已经有一个水晶报表文件,通过以下几步就可以在页面上显示。
1 双击页面进入代码环境在page_load事件中添加如下代码:
if(Session[&filename&]!=null)
CrystalReportViewer1.ReportSource = Session[&filename&].ToString();
这段代码主要是将文件的名字保存在session里面在pageload事件中加以判断,避免在刷新页面的时候出现错误。
2 在Button按钮的单击事件中添加以下代码:
string strName = File1.PostedFile.FileN
if(strName.Trim()!=&&)
CrystalReportViewer1.ReportSource = strN
Session[&filename&] = strN
然后按F5运行,选择一个已经做好的rpt文件,点击按钮就可以看见页面上显示的报表结果了。
在整个过程中重要的还是水晶报表文件的建立,水晶报表的创建有pull和push两种模式,pull模式是直接指定数据库驱动然后组装这些数据,push模式需要自己写代码来连接数据库,并将它们传至报表,push模式比pull要更灵活。
由于篇幅原因先说一下pull模式:
在页面中添加一个rpt文件,这时会弹出一个对话框,选择作为空白报表然后点击确定。
在右边的&字段资源管理器&中右键点击&数据库字段&选择&添加删除数据库&,会弹出数据库专家的对话框,选择可用数据源中的OLEDB(ADO)根据向导创建数据库的连接。
建立好数据库连接后可以将数据库中的表加到报表中,然后就可以将我们要显示的字段总结拖到rpt文件中的详细资料中,并且在页眉会自动添加字段名,这个名字是可以根据自己的喜好更改的。
这样一个很简单的报表就做好的,当然报表的功能远远不止这些,下面就该写代码了。
1、首先要导入命名空间
using CrystalDecisions.CrystalReports.E
using CrystalDecisions.S
2、命名空间导入后就要申明一个ReportDocument类的对象
ReportDocument ReportD
3、最后在pageload事件中加入下面代码就ok了
ReportDoc = new ReportDocument();
ReportDoc.Load(Server.MapPath(&CraystalReport.rpt&));
CrystalReportViewer1.ReportSource = ReportD
按F5运行就可以看到结果,这只是最最简单的一个小例子,要了解水晶报表的强大功能还需要不断努力学习,在vs2003中rpt的界面非常傻瓜化,只要右击页面就可以插入狠多东西,如图片、图表、汇总等等,有待日后慢慢尝试了
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(572)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'asp.net水晶报表边框不显示之解决办法',
blogAbstract:'版本:vs2008自带水晶报表;
使用字段边框,在设计模式下可以看见边框,但是运行后的网页上却不显示。
解决方法:
HTML模式下,删除aspx页面内的
&!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}怎么样实现水晶报表动态列打印,以及用什么插件来实现页面显示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中水晶报表的使用,分不是问题啊~
我使用的工具是VS2005,我用的VS2005自带的水晶报表。为什么我用不了呢?我的数据集里面的数据是对的啊,可以在水晶报表里面就是显示不出来。而且我的页面源文件根本没办法实例化水晶报表对象啊~请在线指点下。3Q。分我可以多给。目前我不给分,因为我提了两个问题给了100分都被删掉了,不知道为什么。如果你回答我可,但我没给你高分你也发贴骂我。谢谢啊,我很着急啊~公司要让我学会用水晶报表啊!
提问者采纳
步骤一、先制作好报表,在报表中写您的SQL语句,预览ok即可; 步骤二、做出预览画面:在ASPX文件画面上拉入控件 &CR:CRYSTALREPORTVIEWER id=&crvPHBM& runat=&server&/& 步骤三、写后天代码,C#这样写: 下面中txtRptID和txtMatchID是两个参数隐藏栏位,RptID是报表代码;可以参考 using S using System.D using System.C using System.C using System.W using System.Web.S using System.Web.UI; using System.Web.UI.WebC using System.Web.UI.WebControls.WebP using System.Web.UI.HtmlC using CrystalDecisions.CrystalReports.E using CrystalDecisions.S /// &summary& /// ReportViewer /// &/summary& /// xx. YYYY/MM/DD VER AUTHOR COMMENTS /// 1.
1.00 Michael New Create public partial class US00_US0000RPT : System.Web.UI.Page { #region &变数宣告& //Crystal Report报表定义的属性与方法 private ReportDocument ReportDoc=new ReportDocument(); #endregion #region &网页事件& protected void Page_Load(object sender, EventArgs e) { if(this.Page.IsPostBack==false) { if (Request[&RptID&] != null) this.txtRptID.Text = Request[&RptID&].ToString().Trim(); if (Request[&UsrID&] != null) this.txtUsrID.Text = Request[&UsrID&].ToString().Trim(); if (Request[&MatchID&] != null) this.txtMatchID.Text = Request[&MatchID&].ToString().Trim(); } string strScript = &&script src='../US00/US0000RPT.js' type='text/javascript'&&/script&&; strScript += &&script&FnCloseTree();&/script&&; Page.ClientScript.RegisterStartupScript(this.GetType(), &arrayScript&, strScript); //列印按钮动作 this.btnPrint.Attributes.Add(&onclick&, &javascript:fn_OpenUpd('& + this.txtUsrID.Text + &','& + this.txtRptID.Text + &','& + this.txtMatchID.Text + &');&); //离开按钮动作 this.btnClose.Attributes.Add(&onclick&, &javascript:FnCloseRpt();&); RefreshReport(); } protected void Page_Unload(object sender,System.EventArgs e) { //关闭报表与释放资源 ReportDoc.Close(); ReportDoc.Dispose(); } #endregion #region &自定义方法& /// ----------------------------------------------------------------------------- /// &summary& /// 函数名称: FnCloseForm() /// 目 的: 关闭视窗,关闭前DELETE本次列印资料 /// &/summary& /// &remarks& /// &/remarks& /// &history& /// xx. YYYY/MM/DD VER AUTHOR COMMENTS /// 1.
1.00 Michael Create /// &/history& /// ----------------------------------------------------------------------------- private void FnCloseForm() { //_OdRpt.DeleteFromData(this.txtUsrID.Text.Trim, this.txtRptID.Text.Trim); Page.ClientScript.RegisterStartupScript(this.GetType(), &FnCloseRpt&, &&script&FnCloseRpt();&/script&&); ReportDoc.Close(); ReportDoc.Dispose(); } /// &summary& /// 开启报表 /// &/summary& private void RefreshReport() { string strReportName= this.txtRptID.Text.ToString(); //strReportName = &US0301022.rpt&; //this.txtMatchID.Text = &10&; strReportName = Server.MapPath(&../USRPT/& + strReportName); ReportDoc.Load(strReportName); //GlobalLibs //设定参数值,如果有参数就这样写 if (this.txtUsrID.Text != null && this.txtUsrID.Text != &&) ReportDoc.SetParameterValue(&UsrID&, this.txtUsrID.Text); if(this.txtMatchID.Text !=null && this.txtMatchID.Text !=&&) ReportDoc.SetParameterValue(&MatchID&,this.txtMatchID.Text); //Database Link this.SetReportDBInf(ReportDoc.Database.Tables); this.crvPHBM.ReportSource = ReportD } /// &summary& /// Set Report's Database /// &/summary& /// &param name=&rptTables&&&/param& private void SetReportDBInf(CrystalDecisions.CrystalReports.Engine.Tables rptTables) { string strDBLink = ConfigurationManager.ConnectionStrings[&BsMsSQLServer&].ConnectionS string[] aryDB = strDBLink.Split(';'); try { string strServerName = aryDB[0].Split('=')[1].ToString().Trim(); string strDatabaseName = aryDB[1].Split('=')[1].ToString().Trim(); string strUserID = aryDB[2].Split('=')[1].ToString().Trim(); string strPassword = aryDB[3].Split('=')[1].ToString().Trim(); CrystalDecisions.Shared.TableLogOnInfo tLogOnI foreach (CrystalDecisions.CrystalReports.Engine.Table cTable in rptTables) { tLogOnInfo = cTable.LogOnI tLogOnInfo.ConnectionInfo.ServerName = strServerN tLogOnInfo.ConnectionInfo.DatabaseName = strDatabaseN tLogOnInfo.ConnectionInfo.UserID = strUserID; tLogOnInfo.ConnectionInfo.Password = strP cTable.ApplyLogOnInfo(tLogOnInfo); } } catch (Exception ex) { } } #endregion }如果是VB,将C#代码翻译为对应VB语法即可
提问者评价
就你一个人回答,分就给你吧。我都不知道你在说什么。。。不过还是谢谢你来看我的问题哈
采纳率100%
其他类似问题
为您推荐:
您可能关注的推广
水晶报表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Asp.Net中设计与使用水晶报表
我们采用下面的几步使用Push模式执行水晶报表:
1. 设计一个DataSet
2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。
&3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
4. 在代码中访问数据库并把数据存入DataSet
5. 调用DataBind方法。
设计一个DataSet
1) 右击&解决方案浏览器&,选择&添加&--&添加新项&--&&数据集&
2) 从&服务器资源管理器&中的&SQL Server&中拖放&Stores&表(位于PUBS数据库中)。
3) 此时在数据集中就会有一个Stores表的结构图。
&- .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。
创建 .rpt 文件 :
4) 使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。
5)建立.rpt文件之后,右击&详细资料&--&&添加/删除数据库&
6) 在&数据库专家&窗口中,展开&项目数据&(代替以前的OleDb),展开&ADO.Net数据集&--&DataSet1&,选择&Stores&表。
7) 将&Stores&表添加到&选定的表&中,点击&OK&
8) 使用PULL模式下的方法,建立一个WebForm
建立一个Crystal Report Viewer 控件
9) 建立一个Crystal Report Viewer 控件,并设定其属性,此处与PULL模式下是一致的。
Code Behind 代码:
10) 在Page_Load方法中使用下面的子函数:
VB.Net代码:
以下为引用的内容:  Sub BindReport()&     Dim myConnection As New SqlClient.SqlConnection()&     myConnection.ConnectionString= &server= (local)\NetSDK;database=Trusted_Connection=yes&&     Dim MyCommand As New SqlClient.SqlCommand()&     MyCommand.Connection = myConnection&     mandText = &Select * from Stores&&     mandType = CommandType.Text&     Dim MyDA As New SqlClient.SqlDataAdapter()&     MyDA.SelectCommand = MyCommand&     Dim myDS As New Dataset1()&     '这就是我们在设计模式上使用的DataSet&     MyDA.Fill(myDS, &Stores&)&     '你不得不使用与你前面DataSet相同名字。&     Dim oRpt As New CrystalReport1()&     ' 水晶报表绑定&     oRpt.SetDataSource(myDS)&     ' 设定水晶报表的ReportSource&     CrystalReportViewer1.ReportSource = oRpt&   End Sub&
以下为引用的内容:private void BindReport()& {&   string strProvider = &Server=(local);DataBase=UID=PWD=&;&   CrystalReport1 oCR = new CrystalReport1();&   Dataset1 ds = new Dataset1();&   SqlConnection MyConn = new SqlConnection(strProvider);&   MyConn.Open();&   string strSel = &Select * from Stores&;&   SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);&   MyAdapter.Fill(ds,&stores&);&   oCR.SetDataSource(ds);&   this.CrystalReportViewer1.ReportSource = oCR;& }&
注意:在上面的代码中,你得注意一下oRpt是&Strongly Typed&的报表文件。如果你需要使用&UnTyped&报表,你得使用ReportDocument对象,然后再调用报表文件。 运行你的程序。
11) 运行你的程序,将报表文件导出成为其它格式,你能够将报表文件导出成为下列格式:
以下为引用的内容:      1. PDF (Portable Document Format)       2. DOC (MS Word Document)       3. XLS (MS Excel Spreadsheet)       4. HTML (Hyper Text Markup Language & 3.2 or 4.0 compliant)       5. RTF (Rich Text Format)
使用Pull模式导出报表,当导出使用Pull模式创建的文件时,水晶报表准确地打开所需要的数据,下面是执行导出功能的代码:
以下为引用的内容:
C#代码:&VB.Net代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click&   Dim myReport As CrystalReport1 = New CrystalReport1()&   '注意:这里我们建立一个strong-typed的水晶报表实例。&     Dim DiskOpts As CrystalDecisions.Shared.DiskFileDestinationOptions = New CrystalDecisions.Shared.DiskFileDestinationOptions()&     myReport.ExportOptions.ExportDestinationType = CrystalDecisions.[Shared].ExportDestinationType.DiskFile&   ' 导出成为其它文件时也需要这个选项&   ' 如Microsoft Exchange, MAPI等.&     myReport.ExportOptions.ExportFormatType = CrystalDecisions. [Shared].ExportFormatType.PortableDocFormat&   '这里我们导出成为.pdf格式文件,你也能选择上面的其它类型文件&     DiskOpts.DiskFileName = &c:\Output.pdf&&   '如果你不指定确切的目录,那么文件就会保存到[Windows]\System32目录中去了&     myReport.ExportOptions.DestinationOptions = DiskOpts&   '水晶报表文件不包含直接的FileName属性,因此你不能直接指定保存的文件名&   '所以你不得不使用DiskFileDestinationOptions对象,设置它的DiskFileName属性&   '为你想要的路径,最后将水晶报表的DestinationsOptions属性指定为上面的DiskFileDestinationOption&     myReport.Export()&   '上面的代码将完成导出工作。& End Sub
使用PUSH模式导出水晶报表,当导出的报表是由PUSH模式建立的时,第一步就是通过编程建立连接并组装DataSet,设置报表的的SetDataSource属性。再下面的步骤就有Pull模式一样的了。
最新图文推荐
最新专栏文章
大家感兴趣的内容
网友热评的文章
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('

我要回帖

更多关于 asp用什么软件打开 的文章

 

随机推荐