Pentru ca se cere si se cauta, am sa-ti prezint o metoda pentru a integra imagini dintr-o cale(path) intr-un raport, la runtime. Metoda este pentru cei care folosesc CR < 11(pentru fericitii utilizatori de >11 exista ole object de tip bitmap cu optiunea Graphic Location).
Bun, sa purcedem!
In prima faza trebuie sa adaugi un DataSet nou in proiectul tau

si sa continui prin a-l edita pentru a adauga o tabela noua in dataset, dupa care adaugi o coloana noua “picture” in tabela:

1

2

3
Acum nu iti mai ramane decat sa setezi tipul coloanei picture in byte[] si ai terminat cu dataset-ul!
![Setam tipul in byte[] Setam tipul in byte[]](http://olteteanu.com/wp-content/uploads/2009/12/5.png)
Setezi tipul

Adaugarea tabelei din dataset in raport
Apesi ok si adaugi campul “picture” in raport. Ar trebui sa arate cam asa:

Raport final
Tot ce mai trebuie sa mai faci acum e sa creezi o metoda care sa citeasca o imagine de pe disc (sau sa o folosesti pe a mea), sa o transforme in byte[] si apoi sa o puna in tabela noastra.
private void PutMyPicture()
{
String picturePath = @"c:\picture.jpg";
byte[] myBytePicture = null;
if (File.Exists(picturePath))
{
//citim imaginea ca un array de bytes
FileStream fs = new FileStream(picturePath, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
int pictureLenght = (int)br.BaseStream.Length;
myBytePicture = new byte[pictureLenght];
myBytePicture = br.ReadBytes(pictureLenght);
br.Close();
fs.Close();
//adaugam un rand nou in tabela noastra
DataSet ds=new DataSet1();
DataRow dr = ds.Tables["DataTable1"].NewRow();
dr["picture"] = myBytePicture;
ds.Tables["DataTable1"].Rows.Add(dr);
//asociem raportului nostru dataset-ul
CrystalReport11.SetDataSource(ds);
}
else
{
MessageBox.Show("O nu, poza nu exista!\nIncearca sa pui o poza cu numele picture.jpg in c"
;
}
}
Am atasat si un demo ca proiect daca cumva te ajuta mai mult:
Imagini Dinamice cu CR (89.9 KiB, 574 hits)
În categoria: Utilitare
Ultima modificare: December 11, 2009
