水晶报表---简单的示例

看了水晶报表的官方示例,自己也跟着做了一个。现在把步骤写下来。
  
 目的是:从DatumDB数据库中的Aritcle 表中获取数据并现在web页面中。

 网站的大体结构是:
   
      
 

 好了,现在开始一一介绍各个文件的作用。
 
 1.创建一个数据集,命名为:MyCustorm.xsd.

 

 

  2.向数据集中添加数据。
   1.确保 “服务器资源管理器” 已经连接了数据库DatumDB.
     如图:
         

 

 

    2.将Aritcle表拽入数据集MyCustorm.xsd.中
     

 好了,数据集填充完成。我的vs2005没有数据集的设计器,我只能在vs2008下使用了

 3.建立报表:Article.rpt,绑定报表并把数据源设置为填充的数据集
  

  1. 在“Crystal Reports 库”对话框的“创建新的 Crystal Report 文档”面板中,选择“使用报表向导”。
  2. 在“选择专家”面板中,选择“标准”后,单击“确定”。
  3. 在“标准报表创建向导”窗口的“可用数据源”面板中,展开“项目数据”文件夹。
  4. 展开“ADO.NET 数据集”节点。
  5. 展开"MyCustorm" 选择“Article”点击">"
  6. 确定。
  7. 下一步中选择要显示的字段。我选了“AritcleName”,“TypeID”,“Summary”,单击确定。
  8. 接着选择分组字段,我选了“TypeID”。
  9. 完成

 4.设置报表的数据源。新建类:ArticleDataSet.cs

   代码如下:
   


 

using CrystalDecisions.CrystalReports.Engine;
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 拖入设计器中,转到后台代码。
 
 代码为:
  

using CrystalDecisions.CrystalReports.Engine;

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;
     }
}



最后的结果如图:

好吧,我承认它一点也不好看,但是。。。。将就着看吧。。。

 


 

posted @ 2008-08-15 10:32  wlhc_Jing  阅读(333)  评论(0编辑  收藏  举报