RDLC系统中,为何区分报表数据源和ReportViewer数据源?

Lyu_KingT 2011-03-07 09:43:22
我成功的作了一些报表,并且有数据显示了。这个小项目结束后,我现在开始总结,发现有个问题不是很清晰,望解答。
我的方法是:
0。自定义一个DataSet,里面添加一些表(对应报表显示需要的数据,为了使程序的SQL少些,我把报表的数据通过视图的方式放在数据库里)
1。新增一个RDLC文件,添加一个Table(见截图1,待会儿的问题就出在截图1里面);
2。在Table的单元格右上角选择数据列;
3。新增一个ReportViewer在WinForm里面,右上角的箭头选择RDLC文件路径,选择数据源(我的DataSet),设计器自动生成BingdingSource
4。程序代码中, 取数据到DataSet的某一张表中,将BingdingSource.DataSource = DataSet.Dt(刚才Fill的DataTable)
5。刷新ReportViewer, this.reportViewer1.Refresh() 我以前就差这一步,还以为前面几步有问题呢

截图1:
猛击这儿

我想问, 为什么RDLC文件还需要一个数据集(就是DataSet1那儿)?直接使用DataSet.xsd就好了嘛。
这个DataSet1对应RDLC文件里面(使用记事本打开)的
<DataSets>
<DataSet Name="ReportStatsSet"> 。。。 </DataSet>
</DataSets>


再有,我看了一下ReportViewer所在的Form的Designer.cs代码里面的InitializeComponent(),其中和报表有关的是:

Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource();
//
// reportViewerMain
//
this.reportViewerMain.Dock = System.Windows.Forms.DockStyle.Fill;
reportDataSource1.Name = "ReportStatsSet"; // 就是刚才DataSet1的位置
reportDataSource1.Value = this.StatsAllViaTimeBindingSource;
this.reportViewerMain.LocalReport.DataSources.Add(reportDataSource1);
this.reportViewerMain.LocalReport.ReportEmbeddedResource = "StatTotal.Reports.StatsAllViaTime.rdlc";
this.reportViewerMain.Location = new System.Drawing.Point(0, 0);
this.reportViewerMain.Name = "reportViewerMain";
this.reportViewerMain.Size = new System.Drawing.Size(725, 546);
this.reportViewerMain.TabIndex = 0;


在这里,为什么使用了一个局部变量reportDataSource1 作为Microsoft.Reporting.WinForms.ReportDataSource的一个实例?


谢谢,还有我报表也是初学,如果觉得我的步骤有不妥之处,请一并告诉我,谢谢,顺祝妇女节快乐!
...全文
285 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大Y 2012-02-02
  • 打赏
  • 举报
回复
数据集的那个东西,你可以不用配置的,因为你建过表了,
在工具栏里有个数据源吧,直接拖就行了!

你在选那个数据源模模的时候,reportDataSource实例一个对像出来,绑定,就是这机制呀!
sdctcl 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 lyu_kingt 的回复:]
我成功的作了一些报表,并且有数据显示了。这个小项目结束后,我现在开始总结,发现有个问题不是很清晰,望解答。
我的方法是:
0。自定义一个DataSet,里面添加一些表(对应报表显示需要的数据,为了使程序的SQL少些,我把报表的数据通过视图的方式放在数据库里)
1。新增一个RDLC文件,添加一个Table(见截图1,待会儿的问题就出在截图1里面);
2。在Table的单元格右上角选择数据列;……
[/Quote]

您好!能给份具体实现输出报表的源代码我吗(Winform的)?
我搞两天了,还是搞不定。
如露亦如电 2012-02-02
  • 打赏
  • 举报
回复
RDLC文件里添加Table是为了你所见即所得,拖拽设计报表用的。
这个dataset(table)里的数据要靠你用代码去填充,你可以动态填充,这样分布式设计,增加你的代码重用率。
shakuly 2011-04-14
  • 打赏
  • 举报
回复
也有类似的疑惑。
rekym 2011-03-13
  • 打赏
  • 举报
回复
我RDLC就没用数据源啊;;;;

DataSet.xsd 只要这个就可以呀....

在这个设计模式下,右击可以创建DATATABLE创建一个空表模版就可以发 (不连接数据库的)

在RDLC中就可以绑定这个了....
Lyu_KingT 2011-03-08
  • 打赏
  • 举报
回复
大家请帮帮我释疑吧,谢谢

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧