[C#] problema con stampa da query linq EnumerableRowCollection

Rikk73

Utente Attivo
7 Apr 2015
133
6
18
Arezzo
Salve a tutti, mi sto approcciando al C# e sto sviluppando un piccolo progetto, mi sono imbattutto in diversi problemi per generare una stampa con anteprima, alcuni li ho superati, ma questo non rieco proprio.

ho una query linq dichiarata come EnumerableRowCollection che può produrre svariate righe, non riesco ad aggiungere pagine nuove e continuare la stampa.

Questa è la query
Codice:
EnumerableRowCollection qry;
/*
altro codice tra cui la connessione ad un file access
da cui recupero i dati popolando una DataTable chiamato res
*/

qry = from d in res.AsEnumerable()
  where d.Field<DateTime>("DATORD") >= DALd
  where d.Field<DateTime>("DATORD") <= ALd
  where d.Field<string>("TIPO").Substring(0, 1) == "R"
  where d.Field<string>("CAU_UFF_OR") != "1"
  where d.Field<string>("CAU_UFF_OR") != "10"
  where d.Field<string>("CAU_UFF_OR") != "30"
  where d.Field<string>("CAU_UFF_OR") != "40"
  where d.Field<string>("CAU_UFF_OR") != "60"
  orderby d.Field<string>("CAU_UFF_OR") ascending
  select d;
Codice:
/*
chiaramente non funziona bene, ma al momento la funzione
che genera il documento è questa
*/
private void prnDoc_Printpage(object sender, PrintPageEventArgs e)
  {
  Graphics graphics = e.Graphics;
  SolidBrush fColor = new SolidBrush(Color.Black);
  int linePerPage = 0;
  int fontHeight = (int)docFont.GetHeight(e.Graphics);
  int topMargin = e.MarginBounds.Top;
  int startX = 50;
  int startY = 50;
  int Ypos = 0;
  int count = 0;
  // max linee per pagina
  linePerPage = (e.MarginBounds.Height / fontHeight) - 2;
  // intestazione
  graphics.DrawString(intestazione, docFont, fColor, startX, startY);
  string divisione = "----------------------------------------------------------------------------------------------------";

  int totRighe = 0;
  foreach (DataRow r in qry) { totRighe++; }

  while (count < linePerPage && count < totRighe)
  {
  foreach (DataRow r in qry)
  {
  Ypos = topMargin + (count * (fontHeight * 2)) + startY + 30;
  string riga =
  "Ord. " + r.Field<string>("NORD") +
  " - " + r.Field<string>("DESCLI") + "\n" + divisione + "\n\n";
   
  graphics.DrawString(riga, docFont, fColor, startX, Ypos, new StringFormat());
  count++;
  }
  }

  //if (line != null) { e.HasMorePages = true; }
  //else { e.HasMorePages = false; }
  }
non so come andare avanti....
grazie a tutti in aticipo per qualsiasi aiuto e suggerimento!