从一个web表单到另一个web表单的调用方法
本文关键字:表单 web 另一个 调用 方法 一个 | 更新日期: 2023-09-27 18:02:08
我尝试像这样从一个webform调用方法到另一个webform
report.aspx
public void BindReport(data crystalReport, DateTime fromdate, DateTime todate, string region)
{
T1 t = new T1();
List<griddataresult_Result> dsc = t.griddataresult(fromdate, todate,
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 dsc)
{
dt.Rows.Add(c.ID, c.OwnerName, c.RegNo, c.total_voilatio);
}
crystalReport.DataDefinition.FormulaFields["region"].Text = "'" + region + "'";
crystalReport.DataDefinition.FormulaFields["fromdate"].Text = "'" + fromdate + "'";
crystalReport.DataDefinition.FormulaFields["todate"].Text = "'" + todate + "'";
crystalReport.SetDataSource(dt);
CrystalReportViewer1.ReportSource = crystalReport;
CrystalReportViewer1.DataBind();
}
和webform .aspx
protected void Report_Click(object sender, EventArgs e)
{
Reports b = new Reports();
data crystalReport = new data();
b.BindReport(crystalReport,Convert.ToDateTime(fromdate.Value),
Convert.ToDateTime(todate.Value), regiondrop.SelectedValue);
}
当我尝试这样显示错误时:
系统。NullReferenceException:对象引用没有设置为实例
在这一行
CrystalReportViewer1.ReportSource = crystalReport;
你不应该这样做,它闻起来像一个糟糕的设计。页面在被请求时被实例化,并经过一个生命周期,而当您手动实例化它时则不会发生。您有两种选择:将所需的方法移动到外部类中,或者创建一个包含相关方法的基类PageBase : Page
,并在需要时将其用作父类。
public class ReportPageBase:Page
{
protected void RenderReport(string param1, string param2)
{
//Your implementation
}
}
public class Report1 : ReportPageBase
{
protected void Button_Click(EventArgs args)
{
base.RenderReport("str1", "str2");
}
}