水晶报表使用PUSH绑定DataSet(Oracle)

      今天头一次使用水晶报表,按照网上的帖子操作,却总是显示空白页,扑腾了半天,终于显示出来了,特此记录,将来方便查询。

1、首先建立数据库连接:

选择数据源后,输入服务器名,账号密码等信息

image

连接成功后,就是这个样子了。

image

2、新建一个数据集架构(XML)

image

起个帅气的名字后,把要展示的表或视图从“服务器资源管理器”里拖放到XML面板上,保存,OK。

3、建立一个RPT文件,这个就不多写了,建立好后,选择在数据专家中选择ADO.NET并选择上面建立的XML数据集,随便把要显示的字段拖放到报表上。

4、新建要显示报表的页,在ASPX中放置一个CrystalReportViewer。

5、编辑CS文件(重点在这里)

//不会代码高亮,凑合看吧。

protected void Page_Load(object sender, EventArgs e)
{
            if (!IsPostBack)
            {

              

                CrystalDecisions.CrystalReports.Engine.ReportDocument oRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
                string RptDir = Server.MapPath("./Report/CrystalReport1.rpt"); //读入RPT模板
                oRpt.Load(RptDir);

                DataSet ds = new DataSet();

              //我在这里郁闷了很久,因为使用的是三层结构,直接读取DataSet显示空白
                BLL.SuperSQL bll_sql = new BLL.SuperSQL();

                //下面函数里的表名和后面的要一样,否则不显示数据,不知道为什么,有高人的请帮忙解释一下。
                ds = bll_sql.GetList("select * from view_abc t where t.idtype=123", "view_abc");
                oRpt.SetDataSource(ds); //设置数据源
                CrystalReportViewer1.ReportSource = oRpt;
                CrystalReportViewer1.DataBind();
            }

}

//修改了最底层的数据读取函数,DAL里的GetList调用的就是它

public static DataSet Query(string SQLString,string srctable)
        {
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    connection.Open();
                    OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);
                    command.Fill(ds, srctable);
                }
                catch (System.Data.OracleClient.OracleException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds;
            }
        }

posted on 2009-11-19 00:29  没头脑  阅读(695)  评论(0编辑  收藏  举报

导航