2010-12-03 11 views
0

J'ai un GridView avec une colonne ButtonField comme ceci: J'ai déjà créé Crystal Report basé sur la procédure stockée avec un paramètre d'entrée appelé ID. J'ai conservé l'ID dans DataKeyNames de GridView. Par conséquent, lorsque l'utilisateur clique sur le bouton d'impression dans Gridview, les rapports de cristaux correspondants sont affichés.Comment afficher le rapport Crystal de GridView?

En attendant avec impatience vos conseils utiles.

Répondre

0

J'ai eu la réponse.

 if (e.CommandName == "printReport")  
     { 
      int ID = Convert.ToInt32(GridView1.SelectedDataKey.Value); 
      try 
      { 
       CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = 
          new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 

       string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
       string[] str = conn.Split(';'); 
       string server = str[0].Substring(str[0].IndexOf(" = ") + 3); 
       string database = str[1].Substring(str[1].IndexOf(" = ") + 3); 
       string userid = str[2].Substring(str[2].IndexOf(" = ") + 3); 
       string password = str[3].Substring(str[3].IndexOf(" = ") + 3); 

       rpt.Load(Server.MapPath("~/Engineering/Reports/Report.rpt")); 

       for (int i = 0; i < rpt.DataSourceConnections.Count; i++) 
        rpt.DataSourceConnections[i].SetConnection(server, database, userid, password); 
       rpt.SetParameterValue(0, ID); 

       rpt.ExportToHttpResponse(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, "Report"); 
      } 
      catch (Exception ex) 
      { 
       return ex.ToString(); 
      } 

     } 
0

Il n'existe aucun moyen direct d'exporter le gridview vers le rapport de cristal.

Appelez la même requête à l'aide de l'ensemble de données, transmettez l'ensemble de données à signaler.

+0

Je ne sais pas dans quel événement DataGrid je souhaite attribuer l'ID – thevan