Звоните в кристальный отчет
Я вызываю этот статический веб-метод в jquery и заполняю таблицу с помощью jquery. Данные успешно отображаются в таблице. На странице веб-формы есть один раскрывающийся список и два средства выбора даты (от даты и до даты), в зависимости от выбора этих значений данные отображаются в таблице. Теперь я хочу создать отчет Crystal, когда я нажимаю кнопку экспорта, а затем данные таблицы, выпадающее значение и значение выбора даты будут отображаться в отчете
Я сохраняю dt в сеансе и вызываю тех, кто хочет позвонить в Crystal Report, и добавляю CrystalReportViewer в Crystal Report.
У меня есть веб-статический веб-метод, т.е.
[WebMethod]
public static string search_data(DateTime fromdate, DateTime todate, string region)
{
try
{
string result = "";
Ts1 td = new T1();
DateTime frDate = new DateTime(fromdate.Year, fromdate.Month, fromdate.Day, 0, 0, 0);
DateTime to_Date = new DateTime(todate.Year, todate.Month, todate.Day, 23, 59, 59);
List<griddataresult_Result> dq = td.griddataresult(frDate, to_Date, region).ToList();
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("OwnerName", typeof(string));
dt.Columns.Add("RegNo", typeof(string));
foreach (var c in dq)
{
dt.Rows.Add(c.ID, c.OwnerName, c.RegNo);
}
DataTable dtt= (DataTable)HttpContext.Current.Session["datagrid"];
result = DataSetToJSON(dt);
return result;
}
catch (Exception)
{
throw new Exception();
}
}
ОБНОВИТЬ
Теперь я добавляю это в веб-форму
private void BindReport(ReportDocument crystalReport, DateTime fromdate, DateTime todate, string region)
{
TrackDataEntities1 t = new TrackDataEntities1();
crystalReport.Load(Server.MapPath("data.rpt"));
List<griddataresult_Result> dsc = t.griddataresult(fromdate, todate, region).ToList();
crystalReport.SetDataSource(dsc);
CrystalReportViewer1.ReportSource = crystalReport;
}
protected void Report_Click(object sender, EventArgs e)
{
DataTable dt = Session["datagrid"] as DataTable;
ReportDocument crystalReport = new ReportDocument();
//crystalReport.SetParameterValue("@fromdate", fromdate.Value);
//crystalReport.SetParameterValue("@todate", todate.Value);
//crystalReport.SetParameterValue("@region", regiondrop.SelectedValue);
BindReport(crystalReport,Convert.ToDateTime(fromdate.Value), Convert.ToDateTime(todate.Value), regiondrop.SelectedValue);
}
когда я нажимаю на поиск, то отображаются данные таблицы, а затем, когда я нажимаю на кнопку отчета, таблица исчезает, и отображается пустой отчет.
1 ответ
Просто добавьте следующий код в событие ButtonClick
protected void Button5_Click(object sender, EventArgs e)
{
dynamic rpt = new ReportDocument();
ApplyCRLogin(rpt);
DataSet dtu = new DataSet();
// Your Stored Procedure Here
// Bind dtu to the ObjReport
rpt .Database.Tables["Command"].SetDataSource(dtu.Tables[0]);
// Here Command is name which you can see inside Field Explorer in Crystal Report Design Mode
// Then Pass your SP parametrs
rpt.SetParameterValue("@dtFromDate", txtFromDate.Text);
rpt.SetParameterValue("@dtToDate", txtToDate.Text);
//After this Export your Crstal Report to PDF
ExportToPDF(rpt);
}
public void ApplyCRLogin(CrystalDecisions.CrystalReports.Engine.ReportDocument oRpt)
{
CrystalDecisions.CrystalReports.Engine.Database oCRDb = oRpt.Database;
CrystalDecisions.CrystalReports.Engine.Tables oCRTables = oCRDb.Tables;
CrystalDecisions.Shared.TableLogOnInfo oCRTableLogonInfo;
CrystalDecisions.Shared.ConnectionInfo oCRConnectionInfo = new CrystalDecisions.Shared.ConnectionInfo();
oCRConnectionInfo.DatabaseName = "DatabaseName";
oCRConnectionInfo.ServerName = "DBSRV_NAME";
oCRConnectionInfo.UserID = "UserID";
oCRConnectionInfo.Password = "Password";
foreach (CrystalDecisions.CrystalReports.Engine.Table oCRTable in oCRTables)
{
oCRTableLogonInfo = oCRTable.LogOnInfo;
oCRTableLogonInfo.ConnectionInfo = oCRConnectionInfo;
oCRTable.ApplyLogOnInfo(oCRTableLogonInfo);
}
}