Visual studio 2005 中的 Crystal Report 的应用( 1 ):水晶报表绑定查询的 dataset 数据
1 ) 创建一个数据集
解决方案资源管理器右击添加新项选择数据集,新建DataSet1.xsd数据集
添加包含到 App_Code 文件夹下
取消弹出来的 TableAdapter 配置向导
服务器资源管理器中选择对应数据库中的表( DeviceSite 表为在 SQL Server 数据库中的表),将表拖到DataSet1.xs d 设计视图中:
创建数据集成功,数据集为空的表格,表头与数据库中的表一致
2 )新建一个 Crystal 报表
解决方案资源管理器右击添加新项选择 Crystal 报表,添加CrystalReport.rpt
2.1 在 Crystal Reports 库中选择使用报表向导,选择专家为标准,点击确定
2.2 在项目数据中点开 ADO.NET 数据集找到前面创建的 DataSet1 数据集,将 DeviceSite 表格选择到右侧,点击下一步
2.3 选择要显示的字段:这里选择了 SiteName 、 County 、 DeviceType 、 DeviceStatus ,点击完成
3 )新建一个 Web 窗体
添加三个控件 Button 、CrystalReportSource、CrystalReportViewer
在 .cs 文件中添加
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;
using System.Data.SqlClient;
在Button1_Click()事件中添加如下代码:
protected void Button1_Click(object sender, EventArgs e)
{
string connectionString = "server = localhost; database=DeviceList; uid=sa;pwd =1234";
SqlConnection myConnection = new SqlConnection(connectionString);
myConnection.Open();
string mySqlString = "select * from [DeviceSite]";
SqlDataAdapter myAdapter = new SqlDataAdapter(mySqlString, myConnection);
DataSet myDataSet = new DataSet();
myAdapter.Fill(myDataSet, "DeviceSite");
myConnection.Close();
//用来验证myDataSet中是否有数据
Response.Write("查得行数:" + myDataSet.Tables["DeviceSite"].Rows.Count);
CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportSource1.ReportDocument.SetDataSource(myDataSet.Tables["DeviceSite"]);
CrystalReportSource1.DataBind();
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();
}
调试运行结果如下:数据库中的数据用 CrystalReportViewer 控件显示在页面中(只显示 2.3 中选择的显示字段)