2013-02-28 3 views
0

Когда я нажимаю на второй странице .. Диалог Box был открыт и сноваCrystal Report диалоговое окно появится на второй странице

запросил информацию входа в систему Это ошибка, которая возникает, когда я нажал на второй странице http://i.imgur.com/8y70goi.png

вот мой код

public void LoadReport() 
{ 

     crReportDocument = new ReportDocument(); 


     connectionInfo = new ConnectionInfo(); 
     ParameterField paramField1 = new ParameterField(); 

     ParameterFields paramFields = new ParameterFields(); 
     ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue(); 
     //p1 
     paramField1.Name = "id"; 
     paramDiscreteValue1.Value = Request.QueryString["Id"].ToString(); 
     paramField1.CurrentValues.Add(paramDiscreteValue1); 
     paramFields.Add(paramField1); 

     CrystalReportViewer1.ReportSource = crReportDocument; 
     crReportDocument.Load(Server.MapPath("~/CrystalReport.rpt")); 
     connectionInfo.ServerName = ConfigurationManager.AppSettings["ServerName"]; 

     connectionInfo.DatabaseName = ConfigurationManager.AppSettings["DataBaseName"]; 
     connectionInfo.UserID = ConfigurationManager.AppSettings["DataBaseUserID"]; 
     connectionInfo.Password = ConfigurationManager.AppSettings["DataBasePasswordName"]; 

     SetDBLogonForReport(connectionInfo); 
     CrystalReportViewer1.ParameterFieldInfo = paramFields; 
     CrystalReportViewer1.EnableDatabaseLogonPrompt = false; 
     CrystalReportViewer1.EnableParameterPrompt = false; 
     CrystalReportViewer1.Visible = true; 

     DataSet dsTemp = new DataSet(); 
     DBAccess dbAccess = new DBAccess(); 
     SqlParameter spId = new SqlParameter("@Id", Request.QueryString["Id"].ToString()); 
     SqlParameter[] sqlParams = new SqlParameter[] { spId }; 
     dsTemp = dbAccess.ExecuteDataset("sp_GetInvestigationData", sqlParams); 
     crReportDocument.SetDataSource(dsTemp.Tables[0]); 

     CrystalReportViewer1.ReportSource = crReportDocument; 
     CrystalReportSource1.ReportDocument.SetParameterValue(0, Request.QueryString["Id"].ToString()); 


} 
private void SetDBLogonForReport(ConnectionInfo connectionInfo) 
{ 
    TableLogOnInfos tableLogOnInfos = CrystalReportViewer1.LogOnInfo; 
    foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos) 
    { 
     tableLogOnInfo.ConnectionInfo = connectionInfo; 

    } 



} 

Благодаря

ответ

0

Убедитесь, что вы же версию кристалла г епорт во всех местах. установлены ли required packages Попробуйте

private ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     ReportDocument rpt = new ReportDocument(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      BindReport(); 
     } 

     private void BindReport() 
     { 

      rpt.Load(Server.MapPath("report1.rpt")); 
      DataSet ds = getReportData(); 
      rpt.SetDataSource(ds.Tables[0]); 
      CrystalReportViewer1.ReportSource = rpt; 
     } 

     private DataSet getReportData() 
     { 
      DataSet ds = new DataSet(); 
      string ConnectionString = ConfigurationManager.ConnectionStrings["myconn"].ConnectionString; 
      SqlConnection con = new SqlConnection(ConnectionString); 
      SqlCommand cmd = new SqlCommand(); 
      cmd.CommandText = "GetProductList"; 
      cmd.CommandType = CommandType.StoredProcedure;    
      con.Open(); 
      cmd.Connection = con; 
      SqlDataAdapter sda = new SqlDataAdapter(cmd); 
      sda.Fill(ds, "ctable"); 
      con.Close(); 
      return ds; 
     } 

Вы можете увидеть другой пример here