2012-03-22 11 views
1

「DVDImage」の列に画像を表示するにはどうすればいいですか?レポートは正常に動作し、画像は表示されません。イメージをバイトに変換する必要がありますか?どのようにバイトに変換した後、リストビューに入れることができますか?画像はCrystalレポートに表示されません

ここに私のコードです:

 public void PrintDVDList(frmReportDVDList frmReportDVDList) 
     { 
      con.Open(); 

      DataTable dt = new DataTable(); 
      DataSet ds = new DataSet(); 
      ds.Tables.Add(dt); 
      OleDbDataAdapter da = new OleDbDataAdapter("SELECT ItemCode, Title, Genre, Film, YearReleased, Classification, NumberOfDiscs, DVDImage FROM tblDVDInventory ORDER BY Title", con); 
      da.Fill(dt); 

      ListView LV = new ListView(); 

      if (dt.Rows.Count > 0) 
      { 
       for (int ctr = 0; ctr <= dt.Rows.Count - 1; ctr++) 
       { 
        ListViewItem Item = new ListViewItem(); 
        Item.Text = dt.Rows[ctr]["ItemCode"].ToString(); 
        Item.SubItems.Add(dt.Rows[ctr]["Title"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["Genre"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["Film"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["YearReleased"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["Classification"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["NumberOfDiscs"].ToString()); 
        Item.SubItems.Add(dt.Rows[ctr]["DVDImage"].ToString()); 
        LV.Items.Add(Item); 
       } 
      } 

      con.Close(); 

      rptDVDList Report = new rptDVDList(); 

      Report.SetDataSource(ds.Tables[0]); 
      frmReportDVDList.crvDVDList.ReportSource = Report; 
      frmReportDVDList.crvDVDList.Refresh(); 
     } 
+1

あなたはlistviewの目的を説明できますか?中間データセットを使用するのではなく、データベースからレポートを直接取り込むことはできませんか? –

+0

とは別に、リーが書いたものとは別に、あなたが実際に必要としないコードがたくさんあります( 'if'とDataSet) – Carsten

+0

はい私はできますが、データベースから直接レポートを使用すると、それは私が別のPC端末にそれを実行するときにパスワードを要求します。そのため、私は中間データセットを使用しています。 –

答えて

0

これは、私は通常、C#でのCrystal Reportsを使い始めるときを見てお勧めのサンプルコードです:

using System; 
using System.Windows.Forms; 
using CrystalDecisions.CrystalReports.Engine; 
using CrystalDecisions.Shared; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      ReportDocument cryRpt = new ReportDocument(); 
      TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
      TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
      ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
      Tables CrTables ; 

      cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt"); 

      crConnectionInfo.ServerName = "YOUR SERVER NAME"; 
      crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"; 
      crConnectionInfo.UserID = "YOUR DATABASE USERNAME"; 
      crConnectionInfo.Password = "YOUR DATABASE PASSWORD"; 

      CrTables = cryRpt.Database.Tables ; 
      foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
      { 
       crtableLogoninfo = CrTable.LogOnInfo; 
       crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
       CrTable.ApplyLogOnInfo(crtableLogoninfo); 
      } 

      crystalReportViewer1.ReportSource = cryRpt; 
      crystalReportViewer1.Refresh(); 
     } 
    } 
} 

から:http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-dynamic-login.htm

することができます接続情報をコードに渡すことで、ユーザーには表示されません。中間データセットを使用する必要はありません。