Ver Mensaje Individual
  #8 (permalink)  
Antiguo 11/02/2010, 11:05
josezamora
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como imprimir un gridview

Bueno consegui impimir un gridview a partir de una conulta de un dataset.Espero que os sirva.Un saludo a todos y gracias por haber contestado:

Protected Sub print_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs)


'Dim myPaintArgs As PaintEventArgs
'myPaintArgs= new PaintEventArgs(e.Graphics,new System.Drawing.Rectangle(new System.Drawing.Point(100,100),size)
'invokepaint(Me.GridView_productos, myPaintArgs)


Dim prFont As New Drawing.Font("Arial", 8) ', Drawing.FontStyle.Bold)
Dim topMargin As Double = e.MarginBounds.Top
Dim yPos As Double = 0
Dim linesPages As Double = 0
Dim count As Integer = 0
Dim texto As String = ""
Dim row As GridViewRow
Dim i, j, k As Integer


'calculamos el numero de lineas que caben en cada pagina

linesPages = e.MarginBounds.Height / prFont.GetHeight(e.Graphics)

'recorremos las filas del gridview hasta que lleguemos a las lineas
' que nos caben en una pagina
While count < linesPages AndAlso i < Me.GridView_productos.Rows.Count

' con esto se imprimiria la cabecera pero no me imprime el resto
'If count < 1 Then
' texto = Me.GridView_productos.Columns(0).HeaderText.ToStri ng + Me.GridView_productos.Columns(1).HeaderText.ToStri ng + Me.GridView_productos.Columns(2).HeaderText.ToStri ng + Me.GridView_productos.Columns(3).HeaderText.ToStri ng + Me.GridView_productos.Columns(4).HeaderText.ToStri ng + Me.GridView_productos.Columns(5).HeaderText.ToStri ng + Me.GridView_productos.Columns(6).HeaderText.ToStri ng + Me.GridView_productos.Columns(7).HeaderText.ToStri ng
' yPos = topMargin + (count * prFont.GetHeight(e.Graphics))
' e.Graphics.DrawString(texto, prFont, System.Drawing.Brushes.Black, 10, yPos)
'End If


row = Me.GridView_productos.Rows(i)
texto = ""
Dim dataset_relleno As DataSet
dataset_relleno = clase_gestionDimSQL.Devuelve_productos_con_porcent aje(Session("Usuario_red"), "listado_productos_porcentaje", ViewState("periodo"), ViewState("cliente"))

' devuelve productos con porcentaje


For j = 0 To dataset_relleno.Tables(0).Rows.Count - 1
For k = 0 To dataset_relleno.Tables(0).Rows(j).ItemArray.Length - 1
texto += " " + dataset_relleno.Tables(0).Rows(j).ItemArray(k).ToS tring

Next
texto += vbCrLf
Next

'calculamos la posicion en la que se escribe la linea
yPos = topMargin + (count * prFont.GetHeight(e.Graphics))
' escribimos la linea con el objeto graphics
e.Graphics.DrawString(texto, prFont, System.Drawing.Brushes.Black, 10, yPos)

' como imprimimos con un dataset, ponemos los contadores al total del grdiview
' si recorrieramos el gridview tendriamos que incrementar en uno para recorrero el gridview

count += Me.GridView_productos.Rows.Count
'i += 1
i = Me.GridView_productos.Rows.Count

End While

'Una vez que hallamos salido del bucle,comprobamos si nos quedan mas filas por imprimir,
' y si quedan saldran en la siguiente pagna.
'i += 1
If i < Me.GridView_productos.Rows.Count Then
e.HasMorePages = True
Else
' si llegamos al final se establece HasMorePages a false para que se termine la impresion
e.HasMorePages = False
i = 0
End If
End Sub

Protected Sub btn_imprimir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_imprimir.Click


Dim printdoc As New PrintDocument

AddHandler printdoc.PrintPage, AddressOf print_printpage

printdoc.Print()

End Sub