看了水晶报表的官方示例,自己也跟着做了一个。现在把步骤写下来。
目的是:从DatumDB数据库中的Aritcle 表中获取数据并现在web页面中。
网站的大体结构是:
好了,现在开始一一介绍各个文件的作用。
1.创建一个数据集,命名为:MyCustorm.xsd.
2.向数据集中添加数据。
1.确保 “服务器资源管理器” 已经连接了数据库DatumDB.
如图:
2.将Aritcle表拽入数据集MyCustorm.xsd.中
好了,数据集填充完成。我的vs2005没有数据集的设计器,我只能在vs2008下使用了
3.建立报表:Article.rpt,绑定报表并把数据源设置为填充的数据集
- 在“Crystal Reports 库”对话框的“创建新的 Crystal Report 文档”面板中,选择“使用报表向导”。
- 在“选择专家”面板中,选择“标准”后,单击“确定”。
- 在“标准报表创建向导”窗口的“可用数据源”面板中,展开“项目数据”文件夹。
- 展开“ADO.NET 数据集”节点。
- 展开"MyCustorm" 选择“Article”点击">"
- 确定。
- 下一步中选择要显示的字段。我选了“AritcleName”,“TypeID”,“Summary”,单击确定。
- 接着选择分组字段,我选了“TypeID”。
- 完成
4.设置报表的数据源。新建类:ArticleDataSet.cs
代码如下:
using CrystalDecisions.Shared;
using System.Data.SqlClient;
/// <summary>
/// ArticleDataSet 的摘要说明
/// </summary>
public class ArticleDataSet
{
private const string DBCONFIG = @" Data Source=MU\ENTERPRISE;Initial Catalog=DatumDB;Integrated Security=True;User ID=sa " ;
private const string SQL = " select * from Article " ;
private const string TABLE_NAME = " Article " ;
public ArticleDataSet()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static DataSet GetArticleDataSet
{
get {
DataSet dataset = new DataSet();
SqlConnection sqlCon = new SqlConnection(DBCONFIG);
SqlCommand sqlCmd = new SqlCommand(SQL, sqlCon);
sqlCon.Open();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCmd);
sqlAdapter.Fill(dataset,TABLE_NAME); //TABLE_NAME注意!!!
sqlCon.Close();
return dataset;
}
}
}
在上面代码中有个sqlAdapter.Fill(dataset,TABLE_NAME); 其中TABLE_NAME 必须填写,并且必须与Article.rpt中绑定的表名一样,否则会出现以下情况:
您请求的报表需要更多信息。
好了,现在做最后一步。添加新文件:Default.aspx.
从工具箱中将CrystalReportViewer 拖入设计器中,转到后台代码。
代码为:
public partial class _Default : System.Web.UI.Page
{
private ReportDocument articleReport;
protected void Page_Load( object sender, EventArgs e)
{
ConfigureReportView();
}
private void ConfigureReportView()
{
articleReport = new ReportDocument();
articleReport.Load(Server.MapPath ( " Article.rpt " ));
articleReport.SetDataSource(ArticleDataSet.GetArticleDataSet);
CrystalReportViewer1.ReportSource = articleReport;
}
}
最后的结果如图:
好吧,我承认它一点也不好看,但是。。。。将就着看吧。。。