ASP.NET - Abrir pdf desde gridview

 
Vista:

Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 05/02/2009 09:55:12
Hola a tod@s, tengo una duda a cerca de como cargar un pdf desde un hyperlink en una columna de un gridview. Cargo la tabla productos con el codigo y el nombre del producto y la tercera columna es un hyperlink que abre un pdf con el codigo del producto como nombre, es decir si el codigo del producto es 1220 el pdf se llama 1220.pdf . Estoy realizando el siguiente codigo y me da un error a ver si alguien me puede decir por que surge. Muchas gracias.

codigo:

Protected Sub asociar_pdfs()

Dim i As Integer

For i = 0 To GridView1.Rows.Count

Dim linkDetalle As HyperLink = CType(GridView1.Rows(i).Cells(2).FindControl("Fitxa"), HyperLink)

linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & GridView1.Rows(i).Cells(0).Text & ".pdf"

Next i

End Sub

error:

Object reference not set to an instance of an object.

este error me sale a la linia:
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & GridView1.Rows(i).Cells(0).Text & ".pdf"
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir pdf desde gridview

Publicado por Pablo Iñareta (224 intervenciones) el 05/02/2009 10:56:45
falla pq GridView1.Rows(i).Cells(0).Text es null, por otro lado el count tiene q ir hasta -1. consejo, mira el html que te pinta antes de darle a ningun link, yo utilizaria el evento datarowbound para crear el link.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 05/02/2009 17:11:48
Me sigue dando el mismo error de que no encuentra el findcontrol , o esta a null, no se , ya estoy desesperado con el tema pq debe ser una tonteria pero no doy con la solución. Me puedes dar un vistazo perfa para ver si ves algo? Aunque lo meta con esta funcion o con el evento datarowbound me da el mismo error.

Dim i As Integer
For i = 1 To GridView1.Rows.Count -1
Dim linkDetalle As HyperLink = New HyperLink()
linkDetalle = CType(GridView1.Rows(i).Cells(2).FindControl("Fitxa"), HyperLink)
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & GridView1.Rows(i).Cells(2).Text & ".pdf"


Next i

gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por x (445 intervenciones) el 05/02/2009 21:01:16
La tercera columna de tu grid es de tipo template y tiene el control Hyperlink con ID = Fitxa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 06/02/2009 08:33:37
Hola, lo he probado con tipo template y sin y me sa el mismo error. En las propiedades del hiperlink la que tengo igual a Fitxa es Text=Fitxa, la propiedad ID no la veo. No se, igual tengo que poner alguna otra propiedad = a Fitxa? Como lo ves?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por Pablo Iñareta (224 intervenciones) el 06/02/2009 12:39:07
todos los objetos que corren en el servidor tienen q tener un ID, si no no funciona, si no lo has establecido tu, tendras el q poner el por defecto, pero tienes q haberlo hecho. En cualquier caso le estas diciendo en tu metodo que busque un control q tenga el ID=Fitxa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 06/02/2009 13:48:01
A ver por lo que tengo entendido Fitxa es una Columna de la propiedad colums del objeto gridview (columna hyperlink). Fitxa no es un objeto, y por lo tanto no tiene ID.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por x (445 intervenciones) el 06/02/2009 16:46:05
OK, no te funciono con la columna template por que no estableciste el ID del Hyperlink a Fitxa ni runat igual a server, y no te funciona ahora por que Fitxa no es el nombre del Hyperlink en la columna, usa el depurador para que en tiempo de ejecucion veas cual es el indice que le corresponde al Hyperlink dentro de la celda, y asi, en lugar de Celda.FindControl("Fitxa") utilixes Celda.Controls[0] (cero solo por dar un ejemplo).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 09/02/2009 10:24:16
Hola, estoy probando ahora así y tampoco me funciona:


Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim codi As String = e.Row.Cells(0).Text
Dim linkDetalle As HyperLink = CType(e.Row.Controls(2), HyperLink)
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & codi & "fitxaseguretat.pdf"
End If

End Sub

¿cómo puedo poner "Fitxa" como nombre del hyperlink de la columna? ¿como ves el codigo ahora, crees que sobra algo?

gracias por la ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por x (445 intervenciones) el 09/02/2009 16:03:14
Como sabes que el indice del control es 2? Estas seguro de que ese es el indice que le corresponde?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 10/02/2009 09:49:17
Lo siento por no explicarte muy bien lo que estoy haciendo. te voy a poner el codigo que estoy ejecutando y lo voy a comentar a ver si ves algo raro.

codigo:

Protected Sub asociar_pdfs()
Dim i As Integer
For i = 0 To GridView1.Rows.Count - 1

Dim linkDetalle As HyperLink = New HyperLink()
linkDetalle = CType(GridView1.Rows(i).Cells(2).FindControl("Fitxa"), HyperLink)
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & GridView1.Rows(i).Cells(2).ToString & ".pdf"

Next i
End Sub

Primeramente tengo 3 columnas en el grid, dos son campos de una bbdd que son el codigo y el nombre del producto. La tercera columna es un hyperlink por el cual quiero abrir el pdf relacionado con el producto de la dicha fila.
Lo que hago es un bucle que recorre todo el gridview y le va asignando a cada producto de cada fila un pdf situado en la ruta "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat".
Me declaro un tipo hyperlink (que no se si esta bien declarado) y le digo que empiece a partir de la primera fila indice 0 y columna 2 que es la columna de los hyperlinks. En la instruccion linkdetalle.NavigateUrl le digo la ruta donde se encuentran los pdfs y de la forma que los debe de asociar al producto, es decir si el codigo del producto es 1000, debe buscar el pdf 1000.pdf y así sucesivamente. ¿cómo lo ves?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 10/02/2009 10:59:32
Hola de nuevo, he probado con otro codigo. No me da error pero cuando ejecuto la palabra fitxa que es la que habría de estar subrallada como hypervinculo no lo esta y cuando clicko encima no hace nada, creo que casi lo tengo , pero se me escapa alguna tontería. Ahora tengo esto:

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim linkDetalle As HyperLink = CType(e.Row.Cells(2).FindControl("Fitxa"), HyperLink)
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & e.Row.Cells(2).ToString & ".pdf"

End If

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por x (445 intervenciones) el 10/02/2009 15:25:39
mmm volvemos a lo mismo, FindControl trabaja con el ID del control, y Fixta no es el nombre del hyperlink, solo lo puedes obtener a traves de la coleccion Controls de la celda, lo cual seria mediante el indice, que muy probablemente sea cero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 10/02/2009 15:43:27
Te agradeceria mucho si me dijeras como puedo cambiar mi codigo para rule, ya que soy nuevo en el tema y no se muy bien como lo quieres implementar tu. Te lo agradecia mucho pq ya no se lo q probar y nadie sabe de este tema.

Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim linkDetalle As HyperLink = CType(e.Row.Cells(2).FindControl("Fitxa"), HyperLink)
linkDetalle.NavigateUrl = "C:Documents and SettingsJAVIERMis documentosQUIMICA DEL FRANCOLIFitxes Seguretat" & e.Row.Cells(2).ToString & ".pdf"

End If

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 10/02/2009 18:04:58
Uuiiii casi ahora he puesto el control como me has dicho y ya me marca la Fitxa como link, pero cuando clicko encima me pone que abre: file:///C:/System.Web.UI.WebControls.GridViewRow.pdf
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por x (445 intervenciones) el 11/02/2009 00:32:02
Mueve el archivo PDF a tu proyecto, y referencialo en el link como si se tratara de una pagina.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir pdf desde gridview

Publicado por quifransa (28 intervenciones) el 12/02/2009 10:36:19
Hola ahora esto funciona correctamente teniendo los pdf en el proyecto. Pero la intencion es tener los pdf en otra ruta del servidor, asi cuando se modifiquen los pdf en esta ruta no se tengan de actualizar cada vez colgandolas las servidor. Hay alguna forma de modificar la NavigateUrl para q apunte a otra ruta. Ahora el codigo que tengo es:

Protected Sub asociar_pdfs()
Dim i As Integer
For i = 0 To GridView1.Rows.Count - 1
Dim linkDetalle As HyperLink = CType(GridView1.Rows(i).Cells(2).Controls(0), HyperLink)
linkDetalle.NavigateUrl = "/../Fitxes Seguretat" & GridView1.Rows(i).Cells(0).Text & ".pdf"

Next i
End Sub

¿sabes como solucionar el problema? si se puede hacer claro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar