Mam wiele list Crystal Reports w liście wyboru, dzięki czemu użytkownik może drukować/wyświetlać wiele raportów w tym samym czasie.Pokaż wiele raportów Crystal w pętli
Obecnie używam sesji do przekazania raportu, ale przez większość czasu wartość sesji jest zastępowana przed przypisaniem do raportu kryształu, w wyniku czego wiele raportów zawiera te same dane. Zastosowałem 3-sekundowe opóźnienie w każdej pętli, ale nie jest to niezawodne rozwiązanie. Ponadto obraz nie wyświetla się w raportach.
Czy istnieje jakaś elegancka technika, aby to zrobić?
Lub
Co będzie alternatywą dla zmiennej sesji?
Jquery:
$.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");
}
});
});
Kontroler:
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;
}
Dzięki za sugestię; Czy jest jakiś sposób bez korzystania z sesji? –
Nie do końca rozumiem, czy możesz nieco wymyślić? –
który kod chcesz opracować – Rakin