找回密码
 立即注册

QQ登录

只需一步,快速开始

zhengyb

金牌服务用户

1

主题

3

帖子

11

积分

金牌服务用户

积分
11
最新发帖
zhengyb
金牌服务用户   /  发表于:2020-7-28 11:27  /   查看:3172  /  回复:4
1金币
直接拖放几个文本框可以生成pdf到指定路径下,但是有数据源,就不知道知道该怎么写了,请指教

最佳答案

查看完整内容

这是Dataset的绑定 DataTable

4 个回复

倒序浏览
最佳答案
最佳答案
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-7-28 11:27:57
来自 5#
这是Dataset的绑定
  1. public void LocateData(object sender, LocateDataSourceEventArgs args)
  2. {
  3. #region
  4. if (args.DataSet.Query.DataSourceName == "DataSource1")
  5. {
  6. if (args.DataSet.Name == "DataSet1")
  7. {
  8. var name = args.Parameters[0].Value.ToString();
  9. List<FormData> data = new List<FormData>();
  10. for (int i = 1; i <= 3; i++)
  11. {
  12. for (int j = 1; j <= 5; j++)
  13. {
  14. for (int k = 1; k <= 2; k++)
  15. {
  16. data.Add(new FormData()
  17. {
  18. Main = i + "CM主控制器",
  19. Sub = "T-80" + i + j + "子控制器",
  20. Variable = "T-80" + i + j + k + ".PV",
  21. Type = "CV投用情况",
  22. Active = 0 + (i + j + k) % 2,
  23. Value = (95 - i / 10.0 + j / 10.0 + k / 100.0) / 100.0
  24. });
  25. }
  26. }
  27. }
  28. args.Data = data;
  29. }
  30. }
  31. #endregion
  32. #region
  33. if (args.DataSet.Query.DataSourceName == "DataSource2")
  34. {
  35. if (args.DataSet.Name == "DataSet2")
  36. {
  37. List<TimeInfo> info = new List<TimeInfo>();
  38. info.Add(new TimeInfo() { Type = "开始时间", Value = Convert.ToDateTime("22/08/2017 09:00:00") });
  39. info.Add(new TimeInfo() { Type = "结束时间", Value = Convert.ToDateTime("22/08/2017 10:00:00") });
  40. info.Add(new TimeInfo() { Type = "CV投用指标", Value = 0.95 });
  41. args.Data = info;
  42. }
  43. }
  44. #endregion
  45. #region
  46. if (args.DataSet.Query.DataSourceName == "DataSource3")
  47. {
  48. if (args.DataSet.Name == "DataSet3")
  49. {
  50. List<Operate> operate = new List<Operate>();
  51. operate.Add(new Operate() { Number = 1, Type = "SVCTL61", Count = 838 });
  52. operate.Add(new Operate() { Number = 2, Type = "SVCTL64", Count = 226 });
  53. operate.Add(new Operate() { Number = 3, Type = "SVCTL23", Count = 222 });
  54. operate.Add(new Operate() { Number = 4, Type = "SVCTL55", Count = 37 });
  55. operate.Add(new Operate() { Number = 5, Type = "SVCTL63", Count = 35 });
  56. operate.Add(new Operate() { Number = 6, Type = "SVCTL01", Count = 30 });
  57. operate.Add(new Operate() { Number = 7, Type = "SVCTL14", Count = 29 });
  58. operate.Add(new Operate() { Number = 8, Type = "SVCTL25", Count = 27 });
  59. operate.Add(new Operate() { Number = 9, Type = "SVCTL02", Count = 26 });
  60. operate.Add(new Operate() { Number = 10, Type = "SVCTL54", Count = 20 });
  61. operate.Add(new Operate() { Number = 11, Type = "其他", Count = 969 });
  62. args.Data = operate;
  63. }
  64. }
  65. #endregion

  66. }
复制代码
DataTable
  1. private void locatedate(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  2.         {
  3.             if (args.DataSet.Query.DataSourceName == "DataSource1")
  4.             {
  5.                 if (args.DataSet.Name == "DataSet1")
  6.                 {
  7.                     args.Data = returndata();
  8.                 }
  9.             }
  10.             if (args.DataSet.Query.DataSourceName == "DataSource2")
  11.             {
  12.                 if (args.DataSet.Name == "DataSet2")
  13.                 {
  14.                     args.Data = returndata();
  15.                 }
  16.             }
  17.         }
  18.         private DataTable returndata()
  19.         {
  20.             DataTable dt = new DataTable();
  21.             dt.Columns.Add("产品编号");
  22.             dt.Columns.Add("产品名称");
  23.             dt.Columns.Add("单价");
  24.             dt.Columns.Add("库存量");
  25.             dt.Columns.Add("产地");
  26.             dt.Rows.Add("A001", "苹果", 10, 300,"中国");
  27.             dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
  28.             dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
  29.             dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
  30.             dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
  31.             dt.Rows.Add("A006", "芒果", 30, 400, "中国");
  32.             dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
  33.             dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
  34.             dt.Rows.Add("A009", "栗子", 320, 400, "中国");
  35.             dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
  36.             dt.Rows.Add("A011", "青芒", 250, 200, "中国");   
  37.             dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
  38.             dt.Rows.Add("A013", "土豆", 380, 400, "中国");
  39.             dt.Rows.Add("A014", "苹果", 110, 300, "中国");
  40.             dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
  41.             dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
  42.             dt.Rows.Add("A017", "土豆", 380, 400, "中国");
  43.             dt.Rows.Add("A018", "苹果", 110, 300, "中国");
  44.             dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
  45.             dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
  46.             dt.Rows.Add("A021", "苹果", 10, 300, "中国");
  47.             dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
  48.             dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
  49.             dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
  50.             dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
  51.             dt.Rows.Add("A026", "芒果", 30, 400, "中国");                        
  52.             return dt;
  53.         }
复制代码


回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-7-28 11:31:30
2#
你好,根据你的描述应该是直连数据库的时候可以正常的导出PDF,但是动态数据源绑定就不行,这是因为你导出的写法上没有进行数据源绑定导致的,这样就会出现你说的导出报错的问题
具体的导出绑定数据源的主要代码:
  1. rpt1.Document.LocateDataSource += new LocateDataSourceEventHandler(LocateData);
复制代码
  1. GrapeCity.ActiveReports.PageReport rpt1 = new GrapeCity.ActiveReports.PageReport(new FileInfo(@"多条件级联模糊过滤.rdlx"));
  2.             rpt1.Document.LocateDataSource += new LocateDataSourceEventHandler(LocateData);

  3.             // Create an output directory.
  4.             System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyWord");
  5.             outputDirectory.Create();

  6.             // Provide settings for your rendering output.
  7.             GrapeCity.ActiveReports.Export.Word.Page.Settings wordSetting = new GrapeCity.ActiveReports.Export.Word.Page.Settings();

  8.             // Set the FileFormat property to .OOXML.
  9.             wordSetting.FileFormat = GrapeCity.ActiveReports.Export.Word.Page.FileFormat.HTML;

  10.             // Set the rendering extension and render the report.
  11.             GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension wordRenderingExtension = new GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension();
  12.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

  13.             // Overwrite output file if it already exists.
  14.             outputProvider.OverwriteOutputFile = true;

  15.             rpt1.Document.Render(wordRenderingExtension, outputProvider, wordSetting);
复制代码


回复 使用道具 举报
zhengyb
金牌服务用户   /  发表于:2020-7-28 11:44:09
3#
LocateData怎么写
回复 使用道具 举报
zhengyb
金牌服务用户   /  发表于:2020-7-28 11:44:11
4#
LocateData怎么写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部