c# - Show Multiple Crystal Reports in Loop -


i have multiple crystal reports in checkboxlist, user can print/show multiple reports @ same time.

currently using session pass reportdocument, of time session value replace before assigning crystal report, result multiple reports contain same data. have applied 3 sec delay on each loop not reliable solution. , image not displaying in reports.

is there elegant technique this??

or

what alternative session variable?

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");                     }                 }); }); 

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; } 

without sessions:

$.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; } 

for displaying image add aspx file crystalimagehandler.aspx in folder viewer.aspx exist. add

 <httphandlers>       <add verb="get" path="crystalimagehandler.aspx" type="crystaldecisions.web.crystalimagehandler, crystaldecisions.web, version=13.0.2000.0, culture=neutral, publickeytoken=692fbea5521e1304"/>      </httphandlers> 

in weconfig... version number varies depends on crystalreport version


Comments