Foros del Web » Programación para mayores de 30 ;) » .NET »

como imprimir un gridview

Estas en el tema de como imprimir un gridview en el foro de .NET en Foros del Web. Hola buenos dias, tengo una pagina en la cual tengo un gridview y un boton que se llama imprimir. Lo que querria saber es como ...
  #1 (permalink)  
Antiguo 09/02/2010, 05:29
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
como imprimir un gridview

Hola buenos dias, tengo una pagina en la cual tengo un gridview y un boton que se llama imprimir.
Lo que querria saber es como poder impirmir el gridview pulsando el boton imprimir.
Seria de mucha utilidad.Muchisimas gracias y un saludo de antemano
  #2 (permalink)  
Antiguo 09/02/2010, 07:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como imprimir un gridview

UTFG

Printing a GridView with Paging
How to print Data Grid or GridView
Print functionality in ASP.Net GridView control
Editable GridView Control in C# and .NET - Part-III Printing the GridView

Obviamente hay que poner un poco de esfuerzo propio para portar algunos de estos códigos al lenguaje que estás usando y que no has indicado.
Pero los principios andan por allí...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/02/2010, 08:30
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como imprimir un gridview

Muchas gracias esas paginas las habia visto.Es para asp.net. Pero no me entero de mucho con las paginas que he encontrado por ahi,incluidas las que me habeis puesto vosotros.
Lo siento pero no se si hay que importar algo y los controles de impirmir no los tengo en la maquina en la que estoy.
Un cordial saludo
  #4 (permalink)  
Antiguo 09/02/2010, 08:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como imprimir un gridview

Sigues sin decir de qué lenguaje estás hablando.
Y por lo demás, el código, aunque sea ASP, contiene los mismos componentes en algunos casos que para VB. Solamente hay que saber realizar la conversión.

Yo he pasado muchas veces códigos de ASP (VB.Net) a VB.Net, sin demasiados problemas. En otras ocasiones pasé de C#.Net a VB.Net sin muchos cambios (según el caso) y sino, al menos sirvieron de referencia para saber qué hacer.

Yo creo que algo de eso te puede servir. A fin de cuentas, nuestro equipo usó uno de esos códigos para crea la impresión de un GridView en VB.Net 2003... No es imposible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/02/2010, 08:52
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como imprimir un gridview

vale el lenguaje es visual basic.net a eso te referias. He metido un codigo de una pagina a ver si funciona.Pero no lo tengo muy claro para imprimir.Si puedes ponerme el codigo vuestro que utilizasteis te lo agradezco.
Un cordial saludo.
  #6 (permalink)  
Antiguo 09/02/2010, 16:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como imprimir un gridview

Te iba a poner los códigos que nosotros usamos, pero preferí ir a la fuente... MSDN

Este es un código que permite tomar un DataGrid del form e imprimirlo. Es simple y eficiente y está preparado para VS 2003. Nosotros desarrollamos la idea en algunos casos para crear dinámicamente un DataGrid en memoria y usarlo para exportar, modificando las dimensiones de la hoja de salida, o bien paginando según fuera necesario:
Código vb.net:
Ver original
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         PrintDocument1.Print()
  3.     End Sub
  4.  
  5.     Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
  6.         Dim myPaintArgs As PaintEventArgs = New PaintEventArgs(e.Graphics, New Rectangle(New Point(0, 0), Me.Size))
  7.         Me.InvokePaint(Me.DG_Tablas, myPaintArgs)
  8.     End Sub
Requiere:
* Un botón con manejo del evento Click.
* Un DataGrid, este caso llamado DG_Tablas.
* Un componente PrintDocument llamado aquí printDocument1 con su manejo del evento PrintPage.

Esto lo saqué de una referencia en un proyecto de The Code Project
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/02/2010 a las 21:37
  #7 (permalink)  
Antiguo 10/02/2010, 02:34
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como imprimir un gridview

Hola buenos dias, en cuanto al post anterior, en mi visual no existen controles de PrintDocument con lo cual mal me veo para poner la solucion esa.
He insertado un codigo de una pagina que estab ane un post anterior tuyo, que es esta pagina:http://www.aspsnippets.com/Articles/Print-functionality-in-ASP.Net-GridView-control.aspx. Y el codigo es el siguiente:
Protected Sub PrintCurrentPage(ByVal sender As Object, ByVal e As EventArgs)

GridView1.PagerSettings.Visible = False

GridView1.DataBind()

Dim sw As New StringWriter()

Dim hw As New HtmlTextWriter(sw)

GridView1.RenderControl(hw)

Dim gridHTML As String = sw.ToString().Replace("""", "'") _

.Replace(System.Environment.NewLine, "")

Dim sb As New StringBuilder()

sb.Append("<script type = 'text/javascript'>")

sb.Append("window.onload = new function(){")

sb.Append("var printWin = window.open('', '', 'left=0")

sb.Append(",top=0,width=1000,height=600,status=0') ;")

sb.Append("printWin.document.write(""")

sb.Append(gridHTML)

sb.Append(""");")

sb.Append("printWin.document.close();")

sb.Append("printWin.focus();")

sb.Append("printWin.print();")

sb.Append("printWin.close();};")

sb.Append("</script>")

ClientScript.RegisterStartupScript(Me.GetType(), "GridPrint", sb.ToString())

GridView1.PagerSettings.Visible = True

GridView1.DataBind()

End Sub

Pero existe un problema que me da al ejecutar en la instruccion: GridView1.RenderControl(hw), que el fallo es el siguiente:
Control 'ctl00_ContentPlaceHolder1_GridView_productos' of type 'GridView' must be placed inside a form tag with runat=server.
He estaod investigando en internet y pone que se soluciona poniendo lo siguinte: page.EnableEventValidation = false;
pero no veo en la pagina la propiedad EnableEventValidation.Si alguien es tan amable y me explica dodne puedo localizarlo.
Muchas gracias y sobre todo a ti gnzsoloyo que eres el que me esta sacando esto adelante.
  #8 (permalink)  
Antiguo 11/02/2010, 11:05
 
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
  #9 (permalink)  
Antiguo 16/02/2010, 03:31
 
Fecha de Ingreso: julio-2009
Mensajes: 60
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: como imprimir un gridview

al final la solucion adoptada fue crear otra pagina creando un datatable, con los datos y directamente hacer pirnt de la pagina.
Un saludo.

Etiquetas: gridview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:41.