hexllo 发表于 2020-9-6 13:28:48

请问如何从磁盘加载一个模板文件返回给JsViewer

本帖最后由 hexllo 于 2020-9-11 14:08 编辑

如何根据传入的参数加载一个本地的报表模板(可能是RDL,页面,区域报表三者之一),加载出来之后按JsView需要的格式返回出去,我这样写不行,我把截图和代码打包上来(代码在附件中),麻烦老师帮忙看下


KearneyKang 发表于 2020-9-6 13:28:49

好的:)

KearneyKang 发表于 2020-9-7 09:20:04

本帖最后由 KearneyKang 于 2020-9-7 10:57 编辑

你好,根据你截图的描述,你是想绑定报表的路径是一个绝对路径是吧,也就是 你部署项目的磁盘的路径还是 ,是这样吗?
给报表的 路径绑定绝对路径是可以的,
      public object GetReport(string P)//获取报表名称和报表参数,进行一个对应的报表名称和参数的分割
      {
            string reportName = P.Split(';');//报表名称;
             string parameter1 = P.Split(';');//参数1;
            string parameter2 = P.Split(';');//参数2;
            PageReport rep = new PageReport();

            string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
            rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
            //rep.Report.ReportParameters.DefaultValue.Values.Add("111");
            return rep.Report;            
      }

      public void Configuration(IAppBuilder app)
      {
      
            app.UseReporting(settings =>
            {
                settings.UseCompression = true;
                settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值
                                                   //settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports\", HttpRuntime.AppDomainAppPath)));               
                settings.LocateDataSource = args =>
                {
                  DataTable dt = new DataTable();
                  string name = ReportName;
                  if (args.DataSet.Query.DataSourceName == "DataSource1")
                  {
                     /* string a = args.Report.Name.ToString();*/   //get Report name                                             
                     /* var p1 = args.Parameters.Value.ToString();*/ //get Report Parameters
                        if (args.DataSet.Name == "DataSet1")
                        {
                            dt.Columns.Add("产品编号");
                            dt.Columns.Add("产品名称");
                            dt.Columns.Add("单价");
                            dt.Columns.Add("库存量");
                            dt.Columns.Add("产地");
                            dt.Rows.Add("A001", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A006", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
                            dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
                            dt.Rows.Add("A009", "栗子", 320, 400, "中国");
                            dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
                            dt.Rows.Add("A011", "青芒", 250, 200, "中国");
                            dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
                            dt.Rows.Add("A013", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A014", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A017", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A018", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A021", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A026", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A001", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A006", "芒果", 30, 400, "中国");
                            dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
                            dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
                            dt.Rows.Add("A009", "栗子", 320, 400, "中国");
                            dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
                            dt.Rows.Add("A011", "青芒", 250, 200, "中国");
                            dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
                            dt.Rows.Add("A013", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A014", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A017", "土豆", 380, 400, "中国");
                            dt.Rows.Add("A018", "苹果", 110, 300, "中国");
                            dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
                            dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
                            dt.Rows.Add("A021", "苹果", 10, 300, "中国");
                            dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
                            dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
                            dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
                            dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
                            dt.Rows.Add("A026", "芒果", 30, 400, "中国");
                        }
                        if (args.DataSet.Name == "DataSet2")
                        {
                            string fp = "D://照片//报表水印.png";
                            //byte[] a = File.ReadAllBytes(@"D:\照片\报表水印.png");
                           
                            byte[] a = SaveImage(fp);
                            MemoryStream stream = new MemoryStream(a);

                            BitmapImage bmp = new BitmapImage();

                            bmp.BeginInit();//初始化

                            bmp.StreamSource = stream;//设置源

                            bmp.EndInit();//初始化结束

                            dt.Columns.Add("产品编号");
                            dt.Columns.Add("产品名称");
                            dt.Columns.Add("单价");
                            dt.Columns.Add("库存量");
                            dt.Columns.Add("产地");
                            dt.Columns.Add("图片", typeof(byte[]));
                            dt.Rows.Add("A001", "苹果", 10, 300, "中国", a);                           
                        }
                  }
                  return dt;
                };


            });

      }在这个方法里写路径: rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));

hexllo 发表于 2020-9-10 14:32:35

好的,请问 RDL报表,页面报表,区域报表都是 这样吗
var report=new PageReport();
report.load(xxx);

KearneyKang 发表于 2020-9-10 15:59:41

RDL报表和页面报表是一样的就是上面那样,区域报表有点不同,你现在使用的是RDl报表还是区域报表

hexllo 发表于 2020-9-11 14:08:20

好的,我明白了,现在用的是RDL报表
页: [1]
查看完整版本: 请问如何从磁盘加载一个模板文件返回给JsViewer