Ich habe einen Bericht mit Crystal Reports erstellt. Ich verwende Visual Studio 2010. Das Problem tritt auf, wenn ich versuche, zu einer anderen Seite zu wechseln. Wenn ich versuche, zu Seite 2 oder zur letzten Seite zu navigieren, wird die Fehlermeldung Keine gültige Berichtsquelle verfügbar angezeigt. Hat jemand eine Idee, was ich tun muss? Vielen Dank für Ihre Zeit
Antworten
Zu viele Anzeigen?
Sunil
Punkte
2825
Dank an @Razvan Panda.
Den vollständigen Code finden Sie hier.
protected void Page_Load(object sender, EventArgs e){
CrystalDecisions.CrystalReports.Engine.ReportDocument report =
new CrystalDecisions.CrystalReports.Engine.ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
report.Load(Server.MapPath("~/Reports/Monthly/CrMonthly.rpt"));
crConnectionInfo.ServerName = ConfigurationManager.AppSettings["Server4Crystal"].ToString();//[SQL SERVER NAME]
crConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["Database4Crystal"].ToString();//[DATABASE NAME]
crConnectionInfo.UserID = ConfigurationManager.AppSettings["User4Crystal"].ToString();//[DB USER NAME]
crConnectionInfo.Password = ConfigurationManager.AppSettings["Password4Crystal"].ToString(); //[DB PASSWORD]
//LOOP THROUGH EACH TABLE & PROVIDE LOGIN CREDENTIALS
CrTables = report.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
//PROVIDE PARAMETERS TO CRYSTAL REPORT, IF REQUIRED.
ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "PARAMETER_NAME";
paramDiscreteValue.Value = "PARAMETER_VALUE";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
//ADD MORE PARAMETERS, IF REQUIRED....
StoreMonthlyViewer.ParameterFieldInfo = paramFields;
StoreMonthlyViewer.ReportSource = report;
//FINALLY REFRESH REPORT
StoreMonthlyViewer.RefreshReport();
StoreMonthlyViewer.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
}
Nick
Punkte
2891
Wie bereits in anderen Antworten erwähnt, ist es so. Speichern Sie das ReportDocument in einer Session (oder so) und setzen Sie die ReportSource.
Beispiel:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["ReportSource"] != null)
{
CrystalReportViewer1.ReportSource = (ReportDocument) Session["ReportSource"];
}
else
{
ReportDocument reportDocument = new ReportDocument();
reportDocument.Load("MyReport.rpt");
CrystalReportViewer1.ReportSource = reportDocument;
Session["ReportSource"] = reportDocument;
}
}
yasir ali
Punkte
3
- See previous answers
- Weitere Antworten anzeigen