/***************************水晶报表入门*************************************** * 1.初学的困惑(设计rpt文件绑定数据字段): * 本以为rpt文件可以像普通的窗体一样,拖一个类似GridView一样的东西, * 再拖一个TextBox, 然后设定Text='Eval("uName")'这样就可以.但不是这么做的. * 2.设计rpt文件,绑定数据字段正确的作法: * 打开字段资源管理器->右击数据库字段->数据库专家 * 然后可以选择项目数据,比如一个可视化的DataSet. * 也可以创建新连接->OLE DB(ADO)->Provide for sql server选择一个mssql数据表. * 也可以创建新连接,选择一个Access数据库文件,然后选择一个数据表. * 这里以Access数据库为例,选择了表之后,在数据库字段里就出现了表及对应的列. * 把列名拖到界面上,就生成了绑定数据库的字段单元吧,拖到详细资料这一节点试试. * 绑定数据库字段的界面就是这样设计出来的.现在只能理解到这一步. * 如果想动态绑定,可以参考下面这篇文章: * http://www.cnblogs.com/zhangxi24/articles/882595.html * 3.右击参数字段,新建一个字段,名称为:Title,然后拖到报表页眉. * 就先设计这样一个报表吧. * 4.绑定就很简单了,CrystalReportSource.ReportDocument.Load();载入一个rpt文件, * 再CrystalReportSource1.ReportDocument.SetDataSource(dataTable); * 设定绑定的数据表,再CrystalReportViewer1.ReportSource = CrystalReportSource; * 5.推荐两篇好文章: * http://www.xland.com.cn/article/7/12/0704/17414.htm * http://blog.csdn.net/sywangzhi/archive/2006/04/13/661778.aspx ******************************************************************************/ using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class CrystalReportFrm : System.Web.UI.Page { UserInfo userInfo = new UserInfo(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) BindReport(); } private void BindReport() { // FirstCrystalReport.rpt是水晶报表文件的名称; //CrystalReportSource1是从工具箱加到页面上的水晶报表数据源对像。 CrystalReportSource1.ReportDocument.Load(Server.MapPath("FirstCrystalReport.rpt")); // SetDatabaseLogon 拉模式中必须用这个方法来设置登录信息, //参数一:用户名;参数二:密码;参数三:服务器;参数四:数据库名 //CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "sa", @"GV2008/GV", "Classic#db"); CrystalReportSource1.ReportDocument.SetDataSource(userInfo.getUser()); //给水晶报表传参数,参数一:是参数名,参数二:参数值; CrystalReportSource1.ReportDocument.SetParameterValue("Title", "这是一个参数字段"); //绑定水晶报表数据源。 CrystalReportSource1.DataBind(); CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.DataBind(); } } <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CrystalReportFrm.aspx.cs" Inherits="CrystalReportFrm" %> <%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %> <!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> <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" /> <CR:CrystalReportSource ID="CrystalReportSource1" runat="server"> </CR:CrystalReportSource> </div> </form> </body> </html>