Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Non mi stampa correttamente il Datagrid

    Ho 2 SUB: il Load e la fase di stampa,
    tuttavia non funziona, ovvero l'anteprima di stampa non rispetta gli stili che vedo assegnati al datagrid, ed è proprio in fase di stampa che mi interessano

    Sub Form_Elenco_Contribuenti_Load

    PrintDocument1.DefaultPageSettings.Landscape = True
    Me.PrintPreviewDialog1.WindowState = FormWindowState.Maximized
    Me.PrintPreviewDialog1.PrintPreviewControl.Zoom = 1
    Me.PrintPreviewDialog1.ShowDialog(Me)

    Dim CodiceStyle As New DataGridTextBoxColumn
    CodiceStyle.MappingName = "COD_CONTRIB"
    CodiceStyle.HeaderText = "CODICE"
    CodiceStyle.Width = 50
    gridStyle.GridColumnStyles.Add(CodiceStyle)

    Dim CognomeStyle As New DataGridTextBoxColumn
    CognomeStyle.MappingName = "COGNOME_CONTRIB"
    CognomeStyle.HeaderText = "COGNOME"
    CognomeStyle.Width = 180
    gridStyle.GridColumnStyles.Add(CognomeStyle)

    Dim NomeStyle As New DataGridTextBoxColumn
    NomeStyle.MappingName = "NOME_CONTRIB"
    NomeStyle.HeaderText = "NOME"
    NomeStyle.Width = 180
    gridStyle.GridColumnStyles.Add(NomeStyle)

    Dim CodFisStyle As New DataGridTextBoxColumn
    CodFisStyle.MappingName = "COD_FIS_CONTRIB"
    CodFisStyle.HeaderText = "CODICE FISCALE"
    CodFisStyle.Width = 180
    gridStyle.GridColumnStyles.Add(CodFisStyle)

    Dim PIVAStyle As New DataGridTextBoxColumn
    PIVAStyle.MappingName = "PART_IVA_CONTRIB"
    PIVAStyle.HeaderText = "PARTITA IVA"
    PIVAStyle.Width = 100
    gridStyle.GridColumnStyles.Add(PIVAStyle)

    Dim PFPGStyle As New DataGridTextBoxColumn
    PFPGStyle.MappingName = "SW_PF_PG_CONTRIB"
    PFPGStyle.HeaderText = "PERSONA F./G."
    PFPGStyle.Width = 100
    gridStyle.GridColumnStyles.Add(PFPGStyle)

    DataGridElenco.TableStyles.Add(gridStyle)


    PrintDocument1_PrintPage


    Try
    Dim SQLstring As String = ""
    Dim conn As MySQLDriverCS.MySQLConnection = Stringaconnessione
    conn.Open()

    SQLstring = "SELECT *,DATE_FORMAT(DAT_NAS_CONTRIB,""%d-%m-%Y"") as DATA_ITA FROM contribuenti"
    Dim data_set As New DataSet("Contribuenti")
    Dim da As New MySQLDriverCS.MySQLDataAdapter(SQLstring, conn)

    da.Fill(data_set, "Contribuenti")
    DataGridElenco.DataSource = data_set

    'DataGridElenco.DataMember = data_set.Tables(0).TableName

    DataGridElenco.DataMember = "Contribuenti"


    Static RigheStampate As Integer
    Static PagineStampate As Integer

    Dim Ds As DataSet = CType(DataGridElenco.DataSource, DataSet)

    Dim Table2 As DataTable = Ds.Tables(0)

    Dim RigheTotali As Integer = Table2.Rows.Count
    Dim ControllaPagine As Boolean = True

    'Crea l'intestazione

    Dim Rect As Rectangle
    Dim ColCorrente As Integer = 0 'Indica la colonna corrente
    Dim Top = e.MarginBounds.Top 'Top = Margine superiore
    Dim Left = e.MarginBounds.Left 'Left = Margine sinistro
    Dim Height As Integer = 25


    'Quante righe posso stampare su un foglio?

    Dim MaxRighe As Integer = e.MarginBounds.Height / Height
    'In totale quante pagine
    Dim MaxPagine As Integer = Table2.Rows.Count / MaxRighe

    Dim BrHeader As SolidBrush = New SolidBrush(Color.LightGray)
    Dim HFont As Font = New Font("Verdana", 8)

    Dim Gt As DataColumn

    For Each Gt In Table2.Columns
    'Testo dell'Header
    Dim ColText As String = Gt.ColumnName
    'Rettangolo dell'Header corrente
    Rect = New Rectangle(Left, Top, 50, Height)
    'Colora l'Header
    e.Graphics.FillRectangle(BrHeader, Rect)
    'Linee dell'Intestazione
    e.Graphics.DrawRectangle(New Pen(Color.Gray, 1), Rect)
    'Disegna il testo dell'Header
    e.Graphics.DrawString(ColText, HFont, Brushes.Black, Left, _
    Top + (e.Graphics.MeasureString(ColText, HFont).Height / 2))
    'Calcola la prossima coordinata Left
    Left += 50
    Next


    'Stampa la righe
    Dim Dc As DataColumn
    Dim Dr As DataRow
    Dim BrRow As SolidBrush = New SolidBrush(Color.White) 'New SolidBrush(DG.TableStyles(0).BackColor)
    Dim PnRow As Pen = New Pen(Color.Gray) ' New Pen(DG.TableStyles(0).GridLineColor)
    Dim RigaCorrente As Integer = 0

    For RigaCorrente = RigheStampate To RigheStampate + MaxRighe
    Left = e.MarginBounds.Left
    Top += Height
    For Each Gt In Table2.Columns 'DG.TableStyles(0).GridColumnStyles
    'Testo della cella
    Dim CelText As String = _
    Table2.Rows(RigaCorrente)(Gt.ColumnName).ToString
    'Rettangolo dell'Intestazione corrente
    Rect = New Rectangle(Left, Top, 50, Height)
    'Colora lo sfondo della cella
    e.Graphics.FillRectangle(BrRow, Rect)
    'Disegna le linee del rettangolo della cella
    e.Graphics.DrawRectangle(PnRow, Rect)
    'Disegna il testo della cella
    e.Graphics.DrawString(CelText, DataGridElenco.Font, Brushes.Black, Left, _
    Top + (e.Graphics.MeasureString(CelText, DataGridElenco.Font).Height / 2))
    'Calcola la prossima coordinata Left
    Left += 50 'Gt.Width
    Next
    'Incrementa il contatore delle righe stampate
    RigheStampate += 1

    'Ci sono altre righe?
    If RigheStampate >= Table2.Rows.Count Then
    ControllaPagine = False
    e.HasMorePages = False

    'Azzera le variabili Static per un successivo utilizzo
    RigheStampate = 0
    PagineStampate = 0
    Exit For
    End If
    Next RigaCorrente

    'Devo controllare le pagine se non ho ancora terminato il numero di righe da
    'Stampare
    If ControllaPagine Then
    'Incrementea il contatore delle pagine stampate
    PagineStampate += 1

    'Controlla se ci sono altre pagine da stampare...
    If PagineStampate < MaxPagine Then
    'Ci sono altre pagine
    e.HasMorePages = True
    Else
    'Fine delle pagine
    e.HasMorePages = False

    'Azzera le variabili Static per un successivo utilizzo
    RigheStampate = 0
    PagineStampate = 0
    End If
    End If


    'Distrugge gli oggetti
    BrHeader.Dispose()
    BrRow.Dispose()
    PnRow.Dispose()
    conn.Close()

    Catch Ex As Exception
    'E' stata sollevata un eccezione...
    MessageBox.Show(Ex.Message, Ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try


    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    vorrei utilizzare anche io delle routine cosi pero con le webform non ho l'oggetto printdocument ,come posso fare ???

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    up please

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.