2010-12-03 5 views
0

다음과 같은 ButtonField 열이 하나있는 GridView가 있습니다. ID라는 입력 매개 변수가있는 저장 프로 시저를 기반으로 Crystal Reports를 이미 만들었습니다. ID를 GridView의 DataKeyNames에 보관했습니다.GridView에서 수정 보고서를 표시하는 방법은 무엇입니까?

그래서 사용자가 Gridview에서 인쇄 버튼을 클릭하면 해당 수정 보고서가 표시됩니다.

유용한 팁을 기다리고 있습니다.

답변

0

나는 대답을 얻었다.

 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

크리스탈 보고서로 그리드 뷰를 내보내는 직접적인 방법은 없습니다.

데이터 집합을 사용하여 동일한 쿼리를 호출하고보고 할 데이터 집합을 전달합니다.

+0

나는 어느 datagrid 이벤트에서 ID를 할당하고 싶지 않다. – thevan