使用JSviewe进行报表展示的时候,经常为了安全性的考虑和前后端分离的考虑,会在使用动态数据源的绑定。 使用动态数据源的绑定很重要一点就是如何进行数据的筛选也就是如何在Startup方法里获取页面的传输进来的参数值。这个办法的实现有两种办法 第一种是使用参数报表,然后再在Startup这个类文件中使用这句代码来实现: var name = args.Parameters[0].Value.ToString(); //获取报表参数 现在来详细说说第二种实现办法: 这个办法其实跟H5的方法类似都是通过页面端的:reportID来进行一个值的传输 简单的点来说,就是通过 reportID:来进行参数值和报表名称的传递,然后在Startup方法中进行是要Split函数进行一个分割来实现参数和报表名称的分割这样来达到最后想要实现的效果:通过页面端传入的值进行一个数据的筛选。 具体实现如下: 前端代码: - <script type="text/javascript">
- var viewer = GrapeCity.ActiveReports.JSViewer.create({
- element: '#viewerContainer',
- id: 'SalesDetail.rdlx' + ';' + $("#TextBox1").val()+';' + $("#TextBox2").val() //报表名称和参数的传递
- availableExports: ['Xml', 'Pdf'],
- reportService: {}
-
- });
- </script>
复制代码后端代码:
使用UseCustomStore的方法进行报表名称和参数的获取和分割 - public class Startup1
- {
- public static string EmbeddedReportsPrefix = "JSdatasource";
- string ReportName = "";
- public object GetReport(string P)//获取报表名称和报表参数,进行一个对应的报表名称和参数的分割
- {
- string reportName = P.Split(';')[0];//报表名称;
- string parameter1 = P.Split(';')[1];//参数1,这样就可以根据参数值进行数据的筛选了;
- string parameter2 = P.Split(';')[2];//参数2;
- PageReport rep=new PageReport();
-
- string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
- rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
- return rep.Report;
- }
-
- public void Configuration(IAppBuilder app)
- {
- app.UseReporting(settings =>
- {
- settings.UseCompression = true;
- settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值
- 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
- if (args.DataSet.Name == "DataSet2")
- {
- name = args.Parameters[0].Value.ToString();
- 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, "中国");
- }
- }
- return dt;
- };
- });
- }
- }
复制代码
|