ASP.NET Recuperar Archivo desde GridView

Buenas, a ver si me puedeis ayudar.
Tengo un GridView que funciona perfectamente y está asociado a una BBDD con su SqlDataSource en un Servidor. Le quiero agregar un campo cuyos registros tengan un link y al pinchar en él se abra el archivo en cuestión. Dicho archivo tiene el mismo nombre que el primer campo del grd, "Nombre". De tal manera que necesito hacer un bind a un archivo que se llame igual que el dato de Nombre del Row seleccionado. Supongo que convirtiendo un campo Boundfield en Template field tengo medio trabajo hecho, pero no se como especificar o concatenar la llamada para que busque ese archivo en cuestión, que por otra parte está en un directorio del servidor. También se me ocurre hacer un trigguer en la BBDD que construya una url al archivo y crear un link en el campo correspondiente. Pero ¿ Como construyo la url ?
Gracias de antemano por vuestra respuesta si me puedes ayudar.

1 respuesta

Respuesta

No necesitas un trigguer,

 protected void NameGrid_RowCommand(object sender, GridViewCommandEventArgs e){
 if (e.CommandName == "NameCommand")
 if (File.Exists(validaArchivo))<-ValidaArchivo es la ruta de tu direcctorio en disco. c://temp//fileName.xml
                {
    descargaArchivo(validaArchivo,Nombrerchivo)<-Ingresa la ruta de tu archivo a descargar
    }
 }
 }
     public void descargaArchivo(string rutaArchivo, string nombreArchivo)
    {

        System.IO.FileInfo InfArch = new System.IO.FileInfo(ruta);
        decimal bytesArch = InfArch.Length;

        Response.Clear();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + nombreArchivo);
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Length", Convert.ToString(bytesArch));
        Response.Charset = "UTF-8";
        Response.WriteFile(ruta);
        Response.Flush();
        Response.End();
    }
 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas