fumasoft
发表于 2021-7-9 10:16:52
Lenka.Guo
发表于 2021-7-9 10:17:51
您好:
如电话沟通,打开具体的报表,不建议直接放在 Create方法里面,调用openReport()接口来传递:
<script type="text/javascript">
let viewer;
function loadViewer() {
viewer = GrapeCity.ActiveReports.JSViewer.create({
element: '#viewerContainer'
});
viewer.openReport("RdfReport.rdf");
}
</script>JSViewer API:
https://help.grapecity.com.cn/display/ActiveReports/JS+Viewer+API
fumasoft
发表于 2021-7-9 11:23:55
后端哪个位置可以获取到,前端传过来的值?
fumasoft
发表于 2021-7-9 13:05:26
方便留一下你的电话吗?这个问题今天必须要解决的
Lenka.Guo
发表于 2021-7-9 14:32:39
您好,在后台接受参数参考:
https://gcdn.grapecity.com.cn/showtopic-95662-1-1.html
fumasoft
发表于 2021-7-9 16:14:21
args.ReportParameters.Value值不存在
fumasoft
发表于 2021-7-9 17:18:04
请给我发一个openReport传值,可以运行的案例
Lenka.Guo
发表于 2021-7-9 17:43:32
您好
实现步骤:
参考示例下载(如果需要运行示例,请先还原Nuget包或者重新安装。)
1. 在GetReport 中为报表对象添加对应名称的参数。
private object getReportFn(string arg)
{
PageReport rpt = new PageReport();
rpt.Load(new System.IO.FileInfo(@"D:\Temp\AcmeStore.rdlx"));
// 添加报表参数
ReportParameter para = new ReportParameter();
para.Name = "p1";
para.UsedInQuery = ReportParameterUsedInQuery.True;
para.DataType = ReportParameterDataType.String;
rpt.Report.ReportParameters.Add(para);
return rpt;
}
2. 在JSViewer 通过openReport 为参数p1 传值
viewer.openReport('AcmeStore.rdlx', [{name:'p1',values:['test']}]);
3. 在 settings.SetLocateDataSource( )方法中获取参数值
app.UseReporting(settings =>
{
//settings.UseEmbeddedTemplates(EmbeddedReportsPrefix, Assembly.GetAssembly(GetType()));
settings.UseCustomStore(getReportFn);
settings.UseCompression = true;
settings.SetLocateDataSource(args => {
var temp = args.ReportParameters.Value;
DataTable dt = new DataTable();
dt.Columns.Add("a1");
dt.Columns.Add("a2");
dt.Rows.Add("a1", "a1");
return dt; });
});
fumasoft
发表于 2021-7-9 18:30:31
1、引入using Microsoft.AspNetCore.Hosting命名空间,IWebHostEnvironment还是报错
2、注释 IWebHostEnvironment env,程序运行后,页面是空白的
fumasoft
发表于 2021-7-9 18:30:57