Foros del Web » Programando para Internet » ASPX (.net) »

hyperlinkcolumn, databound...

Estas en el tema de hyperlinkcolumn, databound... en el foro de ASPX (.net) en Foros del Web. Hola, despues de mucho navegar por internet decidí postear mi problema, resulta que debo listar archivos y subdirectorios de un directorio en particular, para esto, ...
  #1 (permalink)  
Antiguo 23/07/2008, 13:42
Avatar de catu  
Fecha de Ingreso: febrero-2006
Ubicación: Algun mundo paralelo
Mensajes: 15
Antigüedad: 18 años, 2 meses
Puntos: 0
hyperlinkcolumn, databound...

Hola, despues de mucho navegar por internet decidí postear mi problema, resulta que debo listar archivos y subdirectorios de un directorio en particular, para esto, configure un directorio virtual le puse unos archivos, busque algun codigo de ejemplo y resulto esto:

Código:
Dim ruta2 As String
        ruta2 = ("/directorio")

        'cadena que almacena la ruta dentro del servidor web
        Dim ruta As String = Server.MapPath(ruta2)

        Dim archivo, carpeta As String 
        Dim sArchivos(), sCarpetas() As String 
        Dim carpetaInfo As DirectoryInfo 
        Dim archivoInfo As FileInfo 'objeto para extraer propiedades de los archivos
        Dim i, j As Integer




        'crear datatable PARA LLENARLO CON LA INFORMACION DE LOS ARCHIVOS
        Dim tablaarchivos = New DataTable
        'AHORA CREO LAS COLUMNAS DEL DATATaBLE
        Dim filastablaarchivos As DataRow
        'aqui hay que darle formato al datatable

        '''''''''''crea_tabla_archivos()''''''''
        Dim dt As New DataTable
        Dim columnas As DataColumn
        'Dim hl As New HyperLinkColumn
        Dim DataNavigateUrlFormatString

        tablaarchivos.Columns.Add(New DataColumn("NOMBRE_ARCHIVO", GetType(String)))
        tablaarchivos.Columns.Add(New DataColumn("TAMAÑO", GetType(String)))
        tablaarchivos.Columns.Add(New DataColumn("FECHA", GetType(String)))
        'tablaarchivos.Columns.Add(New DataColumn("Ver", GetType(String)))
        'recorro el arreglo con la lista de archivos
        For Each archivo In Directory.GetFiles(ruta)

            archivoInfo = New FileInfo(archivo)
            'inf. del archivo en row
            filastablaarchivos = tablaarchivos.newrow()
            filastablaarchivos("NOMBRE_ARCHIVO") = archivoInfo.Name.ToString
            filastablaarchivos("TAMAÑO") = archivoInfo.Length.ToString("#,#") + "BYTES"
            filastablaarchivos("FECHA") = archivoInfo.CreationTime.ToString()
            tablaarchivos.rows.add(filastablaarchivos)




            grilla_lista.DataSource = tablaarchivos.defaultview
            grilla_lista.DataBind()
            'Catch ex As Exception
        Next
El codigo funciona bien y tengo ya para mostrar los archivos dentro del directorio principal y los subdirectorios asi como sus respectivos archivos, (aqui solo puse para listar archivos) LA COSA ES que
lei que cargando el datatable al datagrid podria lograr que el nombre funcione como link (abriendo la ventana de descarga) utilizando hyperlinkcolumn, luego lei sobre databound pero por mas que lo intento no lo consigo, es lo unico que falta para terminar, si pudiesen ayudarme lo agradecería un montón.

Catu.
  #2 (permalink)  
Antiguo 24/07/2008, 02:06
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 17 años, 11 meses
Puntos: 3
Respuesta: hyperlinkcolumn, databound...

No se si te entiendo bien, quieres que el nombre del fichero lo ponga como un link y al pulsarlo se descargue,no??

Para eso yo añado un templatecolumn al datagrid con CommandName="Descargar"

<asp:TemplateColumn HeaderText="Nombre fichero">
<ItemTemplate>
<asp:LinkButton id="LinkFichero" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.NOMBRE_ARCHIVO") %>' CommandName="Descargar" runat="server"> <%# DataBinder.Eval(Container, "DataItem.NOMBRE_ARCHIVO") %>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>

Y en el metodo ItemCommand
Private Sub DataGrid1_ItemCommand(ByVal ......) Handles DataGrid1.ItemCommand
Select Case e.CommandName
Case "Descargar"
Dim MiPath As String = ConfigurationSettings.AppSettings("pathdocs_superv ision")
Dim MyFile As System.IO.FileInfo = New System.IO.FileInfo(MiPath & e.CommandArgument)
If MyFile.Exists Then
'descargar
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & e.CommandArgument)
Response.AddHeader("Content-Length", MyFile.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(MyFile.FullName)
Response.End()
Else
Response.write ("No se ha encontrado el fichero")
Exit Sub
End If
End Select
End Sub


Espero que te valga. Yo pongo el icono del tipo de fichero en el datagrid. Queda mejor
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 01:04.