首先,我认为这是一个很有用的插件,如果继续得到改进和增强,我想该插件会被更多开发者使用。对于Visual Studio 2005插件源码的学习,对于我们掌握怎样正确创建Visual Studio 2005插件工程是很有帮助的,而且也可从中学到不少编程技巧,例如委托和模板方法。希望大家一起研究下
***部分 完全用控制绑定数据源
1. 建立水晶报表,注意报表要用OLE DB ADO方式连接数据源,这样可以省去报表登录窗口的弹出。
2. 在设计视图中拖拉报表控件CrystalReportViewer,点击右上角智能标签设置报表数据源,选择报表文件,自动生成CrystalReportSource,这时在设计视图中将显示出报表界面,水晶报表将自动用初始数据填充报表字段。注意这里有个小Bug,如果报表在子目录中,选择报表文件将自动用相对路径表示,这时报表显示会出错,应改成绝对路径才可以。
<Report FileName="report\rptOrder.rpt">这里应改成:<Report FileName="..\report\rptOrder.rpt">
3.拖拉一个数据源控件SqlDataSource(也可以用ObjectDataSource),Visual Studio 2005插件按向导生成数据源,这里可以筛选数据,根据情况选择各类数据源。 #t#
4.如何将CrystalReportSource与SqlDataSource两个控件连接在一起呢?可以这样:选择CrystalReportSource控件点击右侧属性中数据栏,再点击Report选择DataSource,在这个数据源集合编辑器选择数据源指定报表名称即可。(下面的Parameters是用来选择报表参数用的)
另外可以参照http://xy229935.spaces.live.com/ Visual Studio 2005插件下面的第二部分即是它的精华。
第二部分 用代码绑定数据源
采用推模式,Visual Studio 2005插件可利用上面已经设计好的报表格式,用DateTable来作为CrystalReportViewer的数据源,这样更灵活.此时可以删除上面的CrystalReportSource和SqlDataSource.具体代码如下(注意要采用OLEDB的连接方式):
- DataTable DS = new DataTable();
- string myConn = System.Configuration.ConfigurationSettings.AppSettings["Test_OLE"];
- OleDbConnection myConnection = new OleDbConnection(myConn);
- string strSql = "select * from talbe1";
- OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(strSql, myConnection);
- myDataAdapter.Fill(DS);
- CrystalDecisions.CrystalReports.Engine.ReportDocument CrystalReportSource;
- CrystalReportSource = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
- CrystalReportSource.Load(Server.MapPath("..\\query\\CrystalReport_kqhz.rpt"));
- CrystalReportSource.SetDataSource(DS);
- this.CrystalReportViewer1.ReportSource = CrystalReportSource;
- this.CrystalReportViewer1.DataBind();