VS2005下水晶报表如何实现动态数据源绑定?
2006-05-21 10:49
645 查看
之前在论坛中经常有人问起在VS2005中使用水晶报表(Crystal Report 10)如何用DataSet实现动态的数据源绑定?关于这个问题我研究了一下,找到了新的解决方案。
在以前VS2003中可以采用PUSH模式推报表,可以用如下的代码实现:
con = new SqlConnection(Session["SQLCONNECTION"].ToString());
strSql = "SELECT * FROM htOrder";
scm = new SqlCommand(strSql, con);
sda = new SqlDataAdapter(scm);
ds = new DataSet();
sda.Fill(ds, " order ");
rptOrder.SetDataSource(ds.Tables["order"]);
crOrder.ReportSource = rptOrder;
在VS2005中不再支持“embedded report”嵌入式报表,只能采用非嵌入式报表的方法拉数据,下面是典型的代码:
//绑定报表数据
private void BindCrystalReports()
//设置登录信息
private void SetDBLogonForReport(ReportDocument reportDocument)
这种方式是不是太频繁琐了,在数据结构更改或者查询条件发生变化时必须要再次更改报表设置,那么在VS2005中水晶报表有没有更简洁的方法呢?最好不用写代码就能搞定呢?有,那就是新的数据绑定控件CrystalReportSource,这个控件与SqlDataSource数据源绑定控件一起连用就可以用SQL表达式作数据源推数据了。下面是实现的步骤:
1. 建立水晶报表,注意报表要用OLE DB ADO方式连接数据源,这样可以省去报表登录窗口的弹出。
2. 在设计视图中拖拉报表控件CrystalReportViewer,点击右上角智能标签设置报表数据源,选择报表文件,自动生成CrystalReportSource,这时在设计视图中将显示出报表界面,水晶报表将自动用初始数据填充报表字段。注意这里有个小Bug,如果报表在子目录中,选择报表文件将自动用相对路径表示,这时报表显示会出错,应改成绝对路径才可以。
<Report FileName="report\rptOrder.rpt">这里应改成:<Report FileName="..\report\rptOrder.rpt">
3.拖拉一个数据源控件SqlDataSource(也可以用ObjectDataSource),按向导生成数据源,这里可以筛选数据,根据情况选择各类数据源。
4.如何将CrystalReportSource与SqlDataSource两个控件连接在一起呢?可以这样:选择CrystalReportSource控件点击右侧属性中数据栏,再点击Report选择DataSource,在这个数据源集合编辑器选择数据源指定报表名称即可。(下面的Parameters是用来选择报表参数用的)
经过这几个步骤,就可以运行程序显示报表啦,怎么样不用写一句代码吧?
具体代码可参考如下:
<CR:CrystalReportViewer ID="crOrder" runat="server" AutoDataBind="True" ReportSourceID="ReportSourceOrder" BestFitPage="False" DisplayToolbar="False" DisplayGroupTree="False" Height="1042px" Width="775px" EnableParameterPrompt="False" />
<CR:CrystalReportSource ID="ReportSourceOrder" runat="server">
<Report FileName="..\report\rptOrder.rpt">
<DataSources>
<CR:DataSourceRef DataSourceID="SqlDataSourceOrder" TableName="htOrder" />
</DataSources>
</Report>
</CR:CrystalReportSource>
<asp:SqlDataSource ID="SqlDataSourceOrder" runat="server" ConnectionString="<%$ ConnectionStrings:cc_2005 %>"
SelectCommand="SELECT * FROM [htOrder] "></asp:SqlDataSource>
在以前VS2003中可以采用PUSH模式推报表,可以用如下的代码实现:
con = new SqlConnection(Session["SQLCONNECTION"].ToString());
strSql = "SELECT * FROM htOrder";
scm = new SqlCommand(strSql, con);
sda = new SqlDataAdapter(scm);
ds = new DataSet();
sda.Fill(ds, " order ");
rptOrder.SetDataSource(ds.Tables["order"]);
crOrder.ReportSource = rptOrder;
在VS2005中不再支持“embedded report”嵌入式报表,只能采用非嵌入式报表的方法拉数据,下面是典型的代码:
//绑定报表数据
private void BindCrystalReports()
//设置登录信息
private void SetDBLogonForReport(ReportDocument reportDocument)
这种方式是不是太频繁琐了,在数据结构更改或者查询条件发生变化时必须要再次更改报表设置,那么在VS2005中水晶报表有没有更简洁的方法呢?最好不用写代码就能搞定呢?有,那就是新的数据绑定控件CrystalReportSource,这个控件与SqlDataSource数据源绑定控件一起连用就可以用SQL表达式作数据源推数据了。下面是实现的步骤:
1. 建立水晶报表,注意报表要用OLE DB ADO方式连接数据源,这样可以省去报表登录窗口的弹出。
2. 在设计视图中拖拉报表控件CrystalReportViewer,点击右上角智能标签设置报表数据源,选择报表文件,自动生成CrystalReportSource,这时在设计视图中将显示出报表界面,水晶报表将自动用初始数据填充报表字段。注意这里有个小Bug,如果报表在子目录中,选择报表文件将自动用相对路径表示,这时报表显示会出错,应改成绝对路径才可以。
<Report FileName="report\rptOrder.rpt">这里应改成:<Report FileName="..\report\rptOrder.rpt">
3.拖拉一个数据源控件SqlDataSource(也可以用ObjectDataSource),按向导生成数据源,这里可以筛选数据,根据情况选择各类数据源。
4.如何将CrystalReportSource与SqlDataSource两个控件连接在一起呢?可以这样:选择CrystalReportSource控件点击右侧属性中数据栏,再点击Report选择DataSource,在这个数据源集合编辑器选择数据源指定报表名称即可。(下面的Parameters是用来选择报表参数用的)
经过这几个步骤,就可以运行程序显示报表啦,怎么样不用写一句代码吧?
具体代码可参考如下:
<CR:CrystalReportViewer ID="crOrder" runat="server" AutoDataBind="True" ReportSourceID="ReportSourceOrder" BestFitPage="False" DisplayToolbar="False" DisplayGroupTree="False" Height="1042px" Width="775px" EnableParameterPrompt="False" />
<CR:CrystalReportSource ID="ReportSourceOrder" runat="server">
<Report FileName="..\report\rptOrder.rpt">
<DataSources>
<CR:DataSourceRef DataSourceID="SqlDataSourceOrder" TableName="htOrder" />
</DataSources>
</Report>
</CR:CrystalReportSource>
<asp:SqlDataSource ID="SqlDataSourceOrder" runat="server" ConnectionString="<%$ ConnectionStrings:cc_2005 %>"
SelectCommand="SELECT * FROM [htOrder] "></asp:SqlDataSource>
相关文章推荐
- VS2005下水晶报表如何实现动态数据源绑定?
- VS2005下水晶报表如何实现动态数据源绑定
- [转]VS2005下水晶报表实现动态数据源绑定
- VS2005下水晶报表如何实现动态数据源绑定?
- VS2005下水晶报表实现动态数据源绑定
- [转]VS2005下水晶报表实现动态数据源绑定
- VS2005中的水晶报表也可以用推模式动态绑定数据源
- PUSH模式动态水晶报表的实现-网格线如何实现呢
- 【转载】如何实现动态更改水晶报表背景图片
- 一起学习水晶报表之【如何实现Web网页显示水晶报表和绑定数据】(课程1)
- C#中如何实现DataTable作为水晶报表的数据源?
- ASP.NET 给报表动态绑定数据源【CS代码】
- 水晶报表中如何动态加载图片
- 【水晶报表】如何实现每页数据汇总?
- 如何实现动态指定存储过程的参数来可视化建立报表工程
- 再谈如何实现动态增加(选取)报表字段的问题
- 一起学习水晶报表之拉模式【如何实现水晶报表显示数据信息】(课程3)
- 如何在水晶报表中动态显示任意格式的图片?
- 水晶报表中如何动态增加字段
- 实现动态ASP.NET水晶报表