从Crystal报表中的本地路径动态添加图像时出错
在我的水晶报表中,我需要从特定的文件夹路径添加标题图像,因为我在下面执行代码
In my Crystal Report I need To add Header Image from specific Folder Path, for that I done Below Code
private void AddImage_ProdfailReport()
{
try
{
// here i have define a simple datatable inwhich image will recide
DataTable dt = new DataTable();
// object of data row
DataRow drow;
// add the column in table to store the image of Byte array type
dt.Columns.Add("Image", System.Type.GetType("System.Byte[]"));
drow = dt.NewRow();
// define the filestream object to read the image
FileStream fs;
// define te binary reader to read the bytes of image
BinaryReader br;
// check the existance of image
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Footer.Jpg"))
{
// open image in file stream
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Footer.Jpg", FileMode.Open);
}
else
{
// if phot does not exist show the nophoto.jpg file
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Footer.jpg", FileMode.Open);
}
// initialise the binary reader from file streamobject
br = new BinaryReader(fs);
// define the byte array of filelength
byte[] imgbyte = new byte[fs.Length + 1];
// read the bytes from the binary reader
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
drow[0] = imgbyte;
// add the image in bytearray
dt.Rows.Add(drow);
// add row into the datatable
br.Close();
// close the binary reader
fs.Close();
// close the file stream
CreRe_ProdFail rptobj = new CreRe_ProdFail();
// object of crystal report
rptobj.SetDataSource(dt);
// set the datasource of crystalreport object
crv1.ReportSource = rptobj;
//set the report source
}
catch (Exception ex)
{
// error handling
MessageBox.Show("Missing Footer.jpg in application folder");
}
// run the application to view image in report
}
我在数据集的数据表中创建了一个字段,
将DataType更改为System.Byte()
I created a field in a datatable of the dataset and change the DataType to System.Byte()
然后将此字段拖到报表
但是它显示一个错误这个字段名称不知道,而打开报告..
我没有得到什么是问题
请帮助我。
Then I drag this field to the report But its Showing An Error "This Field name is not known" , while Opening Report.. I am not getting what is Problem Please help me in it.
我做了;
我试图从数据库和图像从本地路径添加数据并显示在Crystal报表中;我通过下面的代码:
I done It; I am trying to add Data from Database And Image From Local Path and show in Crystal report; I done it by below code:
首先:我在数据集的数据类中创建了一个新列(Image),并将DataType更改为System.Byte
First: I created a New Column ("Image") in a datatable of the dataset and change the DataType to System.Byte()
第二:拖放此图片Filed我想要的位置。
Second : Drag And drop this image Filed Where I want.
private void LoadReport()
{
frmCheckWeigher rpt = new frmCheckWeigher();
CryRe_DailyBatch report = new CryRe_DailyBatch();
DataSet1TableAdapters.DataTable_DailyBatch1TableAdapter ta = new CheckWeigherReportViewer.DataSet1TableAdapters.DataTable_DailyBatch1TableAdapter();
DataSet1.DataTable_DailyBatch1DataTable table = ta.GetData(clsLogs.strStartDate_rpt, clsLogs.strBatchno_Rpt, clsLogs.cmdeviceid); // Data from Database
DataTable dt = GetImageRow(table, "Footer.Jpg");
report.SetDataSource(dt);
crv1.ReportSource = report;
crv1.Refresh();
}
//通过此功能我将我的图像数据合并到dataTable
// By this Function I merge My Image data into dataTable
private DataTable GetImageRow(DataTable dt, string ImageName)
{
try
{
FileStream fs;
BinaryReader br;
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + ImageName))
{
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + ImageName, FileMode.Open);
}
else
{
// if photo does not exist show the nophoto.jpg file
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + ImageName, FileMode.Open);
}
// initialise the binary reader from file streamobject
br = new BinaryReader(fs);
// define the byte array of filelength
byte[] imgbyte = new byte[fs.Length + 1];
// read the bytes from the binary reader
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
dt.Rows[0]["Image"] = imgbyte;
br.Close();
// close the binary reader
fs.Close();
// close the file stream
}
catch (Exception ex)
{
// error handling
MessageBox.Show("Missing " + ImageName + "or nophoto.jpg in application folder");
}
return dt;
// Return Datatable After Image Row Insertion
}