找回密码
 立即注册

QQ登录

只需一步,快速开始

SunDream°
社区贡献组   /  发表于:2016-5-4 00:40  /   查看:3677  /  回复:6
本帖最后由 Lenka.Guo 于 2016-5-4 11:49 编辑

1,还有一个问题,如何在后台指定设计器初始化的数据连接方式使用 DataSet Provider 需要更改那些后台代码?

2,如何将设计器中的RDL或者pageReport,区域报表传入到一个包含Viewer空间的winfrom窗体中显示出预览效果,  是在不保存的前提下哦~  所以不能用那种读取文件路径的方式是不可以的哦~ 麻烦尽快解决这个问题,谢谢!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

6 个回复

倒序浏览
SunDream°
社区贡献组   /  发表于:2016-5-4 16:22:00
推荐
Lenka.Guo 发表于 2016-5-4 15:00
1. 使用DataSet Provider,后台代码编写方法,区域报表见Demo:

2. 添加预览窗体

那DataSet怎么传进去的呢?数据源呢?       我怎么跑起来运行预览报错呢?  
回复 使用道具 举报
SunDream°
社区贡献组   /  发表于:2016-5-4 11:11:04
沙发
没人回复吗?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-5-4 11:49:02
板凳

您的问题收到了,因为需求比较复杂,所以从收到之后,一直在研究如何实现,有了有效的解决方案会立即给您回复。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-5-4 15:00:20
地板
本帖最后由 Lenka.Guo 于 2016-5-4 16:10 编辑

1. 使用DataSet Provider,后台代码编写方法,区域报表见Demo:
  1. public static PageReport AddDataSetDataSource(PageReport report)
  2.         {
  3.             // create DataSource for the report
  4.             DataSource dataSource = new DataSource();
  5.             dataSource.Name = "Reels Database";
  6. <font color="#ff0000">            dataSource.ConnectionProperties.DataProvider = "DATASET";</font>
  7.             dataSource.ConnectionProperties.<font color="#ff0000">ConnectString </font>= "";

  8.             //Create DataSet with specified query and load database fields to the DataSet
  9.             DataSet dataSet = new DataSet();
  10.             Query query = new Query();
  11.             dataSet.Name = "Sample DataSet";
  12.             query.DataSourceName = "Reels Database";
  13.             query.CommandType = QueryCommandType.Text;
  14.             query.CommandText = "";
  15.             dataSet.Query = query;
  16.             String[] fieldsList = new String[] { "MoviedID", "Title", "YearReleased", "MPAA" };
  17.             foreach (string fieldName in fieldsList)
  18.             {
  19.                 Field field = new Field(fieldName, fieldName, null);
  20.                 dataSet.Fields.Add(field);
  21.             }
  22.             //create report definition with specified DataSet and DataSource
  23.             report.Report.DataSources.Add(dataSource);
  24.             report.Report.DataSets.Add(dataSet);
  25.             return report;
  26.         }
复制代码

2. 添加预览窗体
实现思路:
1. 添加新窗体 ReportViewer.cs窗体,添加ReportViewer,实现ReportViewer_Load方法
  1. namespace GrapeCity.ActiveReports.Samples.CreateReport
  2. {
  3.     public partial class ReportViewer : Form
  4.     {
  5.         public ReportViewer()
  6.         {
  7.             InitializeComponent();
  8.         }

  9.         public Object Report
  10.         { get; set; }

  11.         public DesignerReportType ReportType
  12.         { get; set; }


  13.         private void ReportViewer_Load(object sender, EventArgs e)
  14.         {
  15.             switch (ReportType)
  16.             {
  17.                 case DesignerReportType.Page:
  18. case DesignerReportType.Rdl:
  19.                     PageReport report1 = Report as PageReport;
  20.                     viewer1.LoadDocument(report1.Document);
  21.                     break;
  22.                
  23.                 case DesignerReportType.Section:
  24.                     SectionReport report3 = Report as SectionReport;
  25.                     viewer1.Document = report3.Document;
  26.                     report3.Run();
  27.                     break;
  28.                 default:
  29.                     break;
  30.             }
  31.         }
  32.     }
  33. }
复制代码

2. 修改ReportForm中的文件菜单:
  1. private void CreateFileMenu(ToolStripDropDownItem fileMenu)
  2.         {
  3. // 添加预览报表菜单
  4.             fileMenu.DropDownItems.Add(new ToolStripMenuItem("预览", null, new EventHandler(OnViewReport)));}
复制代码

3. 实现OnviewReport方法。
  1.   // 打开预览窗口
  2.         private void OnViewReport(object sender, EventArgs e)
  3.         {
  4.             ReportViewer viewer = new ReportViewer();
  5.             viewer.Report = reportDesigner.Report;
  6.             viewer.ReportType = reportDesigner.ReportType;
  7.             viewer.ShowDialog();
  8.         }
复制代码

Demo 下载:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-5-4 16:33:32
6#
本帖最后由 Lenka.Guo 于 2016-5-4 16:36 编辑
SunDream° 发表于 2016-5-4 16:22
那DataSet怎么传进去的呢?数据源呢?       我怎么跑起来运行预览报错呢?

1. 预览之前,把报表的数据源先删除掉,因为用的是DataSetProvide 在后台邦数据的。
2. DataSet 怎么传进去?传连接字符串,和查询语句?请仔细查看Demo源码。
  1.   public static PageReport AddDataSetDataSource(PageReport report)
  2.         {
  3.             // create DataSource for the report
  4.             DataSource dataSource = new DataSource();
  5.             dataSource.Name = "Reels Database";
  6.             dataSource.ConnectionProperties.DataProvider = "DATASET";
  7.         dataSource.ConnectionProperties.ConnectString= "";//输入连接数据库字符串

  8.             //Create DataSet with specified query and load database fields to the DataSet
  9.             DataSet dataSet = new DataSet();
  10.             Query query = new Query();
  11.             dataSet.Name = "Sample DataSet";
  12.             query.DataSourceName = "Reels Database";
  13.             query.CommandType = QueryCommandType.Text;
  14.           query.CommandText = "";//输入查询语句
  15.             dataSet.Query = query;
  16.             String[] fieldsList = new String[] { "MoviedID", "Title", "YearReleased", "MPAA" };
  17.             foreach (string fieldName in fieldsList)
  18.             {
  19.                 Field field = new Field(fieldName, fieldName, null);
  20.                 dataSet.Fields.Add(field);
  21.             }
  22.             //create report definition with specified DataSet and DataSource
  23.             report.Report.DataSources.Add(dataSource);
  24.             report.Report.DataSets.Add(dataSet);
  25.             return report;
  26.         }
复制代码

回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-5-4 16:43:00
7#
SunDream° 发表于 2016-5-4 16:22
那DataSet怎么传进去的呢?数据源呢?       我怎么跑起来运行预览报错呢?

您好,
您方便留个联系电话吗? 您现在主要关心的是最终用户设计器的定制功能,看您也已经发了好几个帖子都是关于这方面的功能,而每次只能解决您的一部分需求,沟通效率不高也耽误您的进度。
希望能够跟您通过电话沟通,对您现在的需求有个完整的了解,对您也能提供一个完整的解决方案,否则,每次您遇到一个新需求,我们要花很长的时间来寻找解决方案,这样耽误您的时间,而且也没有办法为您提供最有效的解决方案。还请您留个联系电话。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部