gpt4 book ai didi

c# - 循环显示多个 Crystal 报表

转载 作者:太空狗 更新时间:2023-10-29 17:59:09 25 4
gpt4 key购买 nike

我在复选框列表中有多个 Crystal Reports,以便用户可以同时打印/显示多个报表。

目前我正在使用 session 来传递报表文档,但大多数时候 session 值在分配给 Crystal 报表之前被替换,结果多个报表包含相同的数据。我在每个循环上应用了 3 秒延迟,但不是可靠的解决方案。而且图像也没有显示在报告中。

有什么优雅的技术可以做到这一点吗??

或者

Session 变量的替代方案是什么?

J查询:

$.each(chkBoxarr, function (index, value) {
var w = window.open();
$.ajax({
type: "POST",
url: "PrintReports",
traditional: true,
data: { id: value},
datatype: "json",
success: function (data) {
w.document.write(data);
},
error: function () {
alert("Error");
}
});
});

Controller :

public ActionResult PrintReports(id)
{
ReportDocument rpt = new ReportDocument();
rpt.Load("~/ReportFileName.rpt");
HttpContext.Session["rpt"] = rpt;
return Redirect("~/Viewer.aspx");
}

Viewer.aspx.cs

Page_Init(object sender, EventArgs e)
{
var rpt = System.Web.HttpContext.Current.Session["rpt"];
CrystalReportViewer1.ReportSource = (ReportDocument)rpt;
}

最佳答案

Javascript:

$.each(chkBoxarr, function (index, value) {
$.ajax({
url: "PrintReports",
type: 'GET',
data: { id: value},
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
if (data.success) {
var URL = 'Viewer.aspx?type=' + data.URL;
window.open(URL);
}
else {
alert(data.message);
}
}
});
});

Controller :

public ActionResult PrintReports(id)
{
ReportDocument rpt = new ReportDocument();
rpt.Load("~/ReportFileName.rpt");
string guid = Guid.NewGuid().ToString();
Session[guid] = rpt;
return Json(new { success = true, URL = guid }, JsonRequestBehavior.AllowGet);
}

Viewer.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
ReportName = Request.QueryString["type"].ToString();
ReportDocument doc = new ReportDocument();
doc = (ReportDocument)Session[ReportName];
if (doc == null)
Response.Write("<H2>Nothing Found; No Report name found</H2>");
CrystalReportViewer1.ReportSource = doc;
}

没有 session :

$.each(chkBoxarr, function (index, value) {    
var URL = 'Viewer.aspx?id=' + value;
window.open(URL);
});

protected void Page_Load(object sender, EventArgs e)
{
ReportDocument rpt = new ReportDocument();
rpt.Load("~/ReportFileName.rpt");
CrystalReportViewer1.ReportSource = rpt;
}

为了显示图像,在 Viewer.aspx 所在的文件夹中添加一个 aspx 文件 CrystalImageHandler.aspx。还加了

 <httpHandlers>
<add verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>

</httpHandlers>

在 Weconfig 中...版本号因您的 crystalreport 版本而异

关于c# - 循环显示多个 Crystal 报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com