PDA

View Full Version : سوال: فرستادن image به pictureobject کریستال ریپورت



maryamkhalesi202
شنبه 18 اردیبهشت 1389, 09:55 صبح
سلام

من می خوام در حالت runTime یه image به picture object کریستال پاس کنم، دستور زیر رو تو C# نوشتم ولی هیچ آیتمی که یه مسیر یا هر چی که بتونه یه عکس رو نمایش بده ، برای set کردن نداره:عصبانی++:

PictureObject oPicture =(PictureObject) rptClass.ReportDefinition.ReportObjects["pPicture"];

کسی میتونه کمکم کنه!!!!!!

maryamkhalesi202
سه شنبه 04 خرداد 1389, 13:32 عصر
همه دوستانی که این مشکل رو دارن می تونن به سایت زیر مراجعه کنن


http://aspalliance.com/1097_Importing_Dynamic_Images_to_the_Crystal_Repor t_without_Database_Overhead_using_Visual_Studio_20 05.all
موفق باشید :لبخندساده:

mahrokh_1121
سه شنبه 04 خرداد 1389, 20:04 عصر
سلام
من اصلا متوجه نشدم
میشه توضیح بدید

maryamkhalesi202
چهارشنبه 05 خرداد 1389, 10:28 صبح
اول یه dataset.xsd بساز بنام dsImage.xsd. (این dataset برای ذخیره کردن image استفاده خواهد شد.)

بعد تو Designer دیتاست، یک datatable ،اضافه کن بنام imeges. برای این datatable یه ستون بساز بنام img نوعش هم [] system.byte باشه .

بعد از درست شدن dataset به کریستال ریپورت رفته و datatable رو بهش اضافه میکنیم:

database field==>dataset expert ==>project data==> ado.net datasets==> dsimage.xsd==>images

حالا برای ست کردن image باید


ReportDocument rptTest1 = new ReportDocument();
//load your rpttest1
//rpttest1.load(your report path)
rptTest1.Database.Tables["Images"].SetDataSource(ImageTable(your image path));

این تابع برای ذخیره کردن image در فیلد img استفاده می شود .

public static DataTable ImageTable(string ImageFile)
{
DataTable data = newDataTable();
DataRow row;
data.TableName = "Images";
data.Columns.Add("img", System.Type.GetType("System.Byte[]"));
FileStream fs = new FileStream(ImageFile, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
row = data.NewRow();
row[0] = br.ReadBytes(br.BaseStream.Length);
data.Rows.Add(row);
br = null;
fs.Close();
fs = null;
return data;
}