从一个webform调用方法到另一个webform

时间:2016-08-11 10:09:24

标签: c# asp.net webforms

我尝试将方法从一个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);
        }

当我尝试这样的显示错误时:

  

System.NullReferenceException:未将对象引用设置为实例   一个对象。

在这一行

CrystalReportViewer1.ReportSource = crystalReport;

1 个答案:

答案 0 :(得分:1)

你不应该闻起来像一个糟糕的设计。 页面在被请求时被实例化,并且通过手动实例化时不会发生的生命周期。 您有两种选择:将所需方法移动到外部类或创建包含相关方法的基类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"); } } ,并在需要时将其用作父类。

{{1}}