找回密码
 立即注册

QQ登录

只需一步,快速开始

hexllo
金牌服务用户   /  发表于:2020-9-6 13:28  /   查看:3610  /  回复:5
1金币
本帖最后由 hexllo 于 2020-9-11 14:08 编辑

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


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

最佳答案

5 个回复

倒序浏览
最佳答案
最佳答案
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-9-6 13:28:49
来自 6#
好的
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-9-7 09:20:04
2#
本帖最后由 KearneyKang 于 2020-9-7 10:57 编辑

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

  7.             string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
  8.             rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
  9.             //rep.Report.ReportParameters[0].DefaultValue.Values.Add("111");
  10.             return rep.Report;            
  11.         }

  12.         public void Configuration(IAppBuilder app)
  13.         {
  14.         
  15.             app.UseReporting(settings =>
  16.             {
  17.                 settings.UseCompression = true;
  18.                 settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值  
  19.                                                    //settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports", HttpRuntime.AppDomainAppPath)));               
  20.                 settings.LocateDataSource = args =>
  21.                 {
  22.                     DataTable dt = new DataTable();
  23.                     string name = ReportName;
  24.                     if (args.DataSet.Query.DataSourceName == "DataSource1")
  25.                     {
  26.                        /* string a = args.Report.Name.ToString();*/   //get Report name                                             
  27.                        /* var p1 = args.Parameters[0].Value.ToString();*/ //get Report Parameters
  28.                         if (args.DataSet.Name == "DataSet1")
  29.                         {
  30.                             dt.Columns.Add("产品编号");
  31.                             dt.Columns.Add("产品名称");
  32.                             dt.Columns.Add("单价");
  33.                             dt.Columns.Add("库存量");
  34.                             dt.Columns.Add("产地");
  35.                             dt.Rows.Add("A001", "苹果", 10, 300, "中国");
  36.                             dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
  37.                             dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
  38.                             dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
  39.                             dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
  40.                             dt.Rows.Add("A006", "芒果", 30, 400, "中国");
  41.                             dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
  42.                             dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
  43.                             dt.Rows.Add("A009", "栗子", 320, 400, "中国");
  44.                             dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
  45.                             dt.Rows.Add("A011", "青芒", 250, 200, "中国");
  46.                             dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
  47.                             dt.Rows.Add("A013", "土豆", 380, 400, "中国");
  48.                             dt.Rows.Add("A014", "苹果", 110, 300, "中国");
  49.                             dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
  50.                             dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
  51.                             dt.Rows.Add("A017", "土豆", 380, 400, "中国");
  52.                             dt.Rows.Add("A018", "苹果", 110, 300, "中国");
  53.                             dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
  54.                             dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
  55.                             dt.Rows.Add("A021", "苹果", 10, 300, "中国");
  56.                             dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
  57.                             dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
  58.                             dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
  59.                             dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
  60.                             dt.Rows.Add("A026", "芒果", 30, 400, "中国");
  61.                             dt.Rows.Add("A001", "苹果", 10, 300, "中国");
  62.                             dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
  63.                             dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
  64.                             dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
  65.                             dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
  66.                             dt.Rows.Add("A006", "芒果", 30, 400, "中国");
  67.                             dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
  68.                             dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
  69.                             dt.Rows.Add("A009", "栗子", 320, 400, "中国");
  70.                             dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
  71.                             dt.Rows.Add("A011", "青芒", 250, 200, "中国");
  72.                             dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
  73.                             dt.Rows.Add("A013", "土豆", 380, 400, "中国");
  74.                             dt.Rows.Add("A014", "苹果", 110, 300, "中国");
  75.                             dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
  76.                             dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
  77.                             dt.Rows.Add("A017", "土豆", 380, 400, "中国");
  78.                             dt.Rows.Add("A018", "苹果", 110, 300, "中国");
  79.                             dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
  80.                             dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
  81.                             dt.Rows.Add("A021", "苹果", 10, 300, "中国");
  82.                             dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
  83.                             dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
  84.                             dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
  85.                             dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
  86.                             dt.Rows.Add("A026", "芒果", 30, 400, "中国");
  87.                         }
  88.                         if (args.DataSet.Name == "DataSet2")
  89.                         {
  90.                             string fp = "D://照片//报表水印.png";
  91.                             //byte[] a = File.ReadAllBytes(@"D:\照片\报表水印.png");
  92.                            
  93.                             byte[] a = SaveImage(fp);
  94.                             MemoryStream stream = new MemoryStream(a);

  95.                             BitmapImage bmp = new BitmapImage();

  96.                             bmp.BeginInit();//初始化

  97.                             bmp.StreamSource = stream;//设置源

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

  99.                             dt.Columns.Add("产品编号");
  100.                             dt.Columns.Add("产品名称");
  101.                             dt.Columns.Add("单价");
  102.                             dt.Columns.Add("库存量");
  103.                             dt.Columns.Add("产地");
  104.                             dt.Columns.Add("图片", typeof(byte[]));
  105.                             dt.Rows.Add("A001", "苹果", 10, 300, "中国", a);                           
  106.                         }
  107.                     }
  108.                     return dt;
  109.                 };


  110.             });

  111.         }
复制代码
在这个方法里写路径: rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
回复 使用道具 举报
hexllo
金牌服务用户   /  发表于:2020-9-10 14:32:35
3#
好的,请问 RDL报表,页面报表,区域报表都是 这样吗
var report=new PageReport();
report.load(xxx);
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-9-10 15:59:41
4#
RDL报表和页面报表是一样的就是上面那样,区域报表有点不同,你现在使用的是RDl报表还是区域报表
回复 使用道具 举报
hexllo
金牌服务用户   /  发表于:2020-9-11 14:08:20
5#
好的,我明白了,现在用的是RDL报表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部