[ drgajic12 @ 20.01.2011. 11:11 ] @
Imam 2 tabele: Fakture i Stavke,zajednicko polje im je BROJ_RACUNA.Hocu da istampam Izvestaj gde ce stavke da budu grupisane po fakturama kojima pripadaju.

SA OVIM KODOM mi razdvaja fakture na nove stranice kako treba,tj. ukoliko nova faktura ne moze da stane na list preci ce na novi list;ali ne i stavke,tj. ukoliko neka stavka npr druga,treca stavka neke fakture prelazi donju granicu bice pojedena,tj. nece preci na novi list,samo ce na novom listu da nastavi sledeca nova faktura.
Pretpostavljam da moram i u unutrasnjoj FOREACH petlji nekako da signaliziram kraj stranice i da na novoj stranici nastavi dokle je stao sa stavkama,ali ne znam kako!???

private int linijaIstampano;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int KordinataX = 17;
int KordinataY = 60;

while (linijaIstampano<FaktureBindingSource.Count)
{
//STAMPA FAKTURU
DataRowView faktura= (DataRowView)FaktureBindingSource[linijaIstampano++];
e.Graphics.DrawString("FAKTURA BR. " + faktura["broj_racuna"].ToString() +" DATUM: " + datumFakture[0],new Font("Times New Roman", 8, FontStyle.Bold), Brushes.Black,KordinataX,KordinataY);
//STAMPA STAVKE TE FAKTURE
foreach (DataRowView stavka in stavkeBindingSource)
{
if (stavka["broj_racuna"].ToString() == faktura["broj_racuna"].ToString())
{
e.Graphics.DrawString(stavka["broj_artikla"].ToString(), new Font("Times New Roman", 8), Brushes.Black, 40, KordinataY+= 2);
e.Graphics.DrawString(stavka["naziv_robe"].ToString(), new Font("Times New Roman", 8), Brushes.Black, 210, KordinataY);
KordinataY+= 13;
}
}
KordinataY+= 15;
if (KordinataY>= e.MarginBounds.Bottom - 100)
{
e.HasMorePages = true;
return;
}
[ Boško @ 20.01.2011. 17:45 ] @
Citat:
Pretpostavljam da moram i u unutrasnjoj FOREACH petlji nekako da signaliziram kraj stranice i da na novoj stranici nastavi dokle je stao sa stavkama.....


Upravo tako.

Uvedi još jednu promenljivu koja će brojati odštampane stranice, pa ako je strana veća od jedan preskoči zaglavlje ("FAKTURA Br. ...") , a petlju foreach zameni petljom for koja kreće od druge promenljive koja broji odštampane stavke (na prvoj strani će naravno krenuti od 1, a na svakoj sledećoj od stavke do koje je stigla).

Na kraju dodaj, ako je odštampao sve, da eventualno štampa neki footer i obavezno e.HasMorePages = false;

[ drgajic12 @ 20.01.2011. 19:41 ] @
Citat:
Boško: Upravo tako.

Uvedi još jednu promenljivu koja će brojati odštampane stranice, pa ako je strana veća od jedan preskoči zaglavlje ("FAKTURA Br. ...") , a petlju foreach zameni petljom for koja kreće od druge promenljive koja broji odštampane stavke (na prvoj strani će naravno krenuti od 1, a na svakoj sledećoj od stavke do koje je stigla).

Na kraju dodaj, ako je odštampao sve, da eventualno štampa neki footer i obavezno e.HasMorePages = false;


Deluje mi logicno,ali ajde molim te ako imas vremena implementiraj to sto si zamislio u ovaj moj kod,makar otprilike, jer mi je malo problem da se snadjem.
Hvala puno.
[ Boško @ 20.01.2011. 22:36 ] @
Ovo je nešto što sam ranije radio. Možda će ti pomoći.