[ Foro de C# ]

Descargar archivo desde data gridview

17-Feb-2023 19:29
Invitado (Craner97)
1 Respuestas

En un DataGridView estoy mostrando todos los archivos de un directorio y agregándole   un Column button quiero que se descarguen los archivos pero solamente de la fila de la cual se esta presionando el botón


14-Mar-2023 22:27
Invitado (Alejandro Andrade)

Para descargar un archivo desde un DataGridView en C#, necesitas agregar un controlador de eventos Click al botón en la columna Button de la fila correspondiente. Dentro del controlador de eventos, puedes obtener la información de la fila actual y el nombre del archivo a través de las propiedades de la celda correspondiente. A continuación, puedes utilizar la clase File de C# para descargar el archivo.

Aquí hay un ejemplo de cómo podrías hacerlo:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
   // Verificar si el botón fue presionado en la columna Button
   if (e.ColumnIndex == dataGridView1.Columns["Button"].Index && e.RowIndex >= 0)
   {
       // Obtener el nombre del archivo de la celda correspondiente
       string fileName = dataGridView1.Rows[e.RowIndex].Cells["FileName"].Value.ToString();

       // Descargar el archivo
       string filePath = @"C:\directorio\" + fileName; // Reemplaza con la ruta correcta
       if (File.Exists(filePath))
       {
           Response.Clear();
           Response.ContentType = "application/octet-stream";
           Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
           Response.TransmitFile(filePath);
           Response.End();
       }
   }
}

Este código asume que estás utilizando ASP.NET y que el DataGridView se encuentra en una página web. Si estás utilizando otro tipo de aplicación de C#, como una aplicación de escritorio, el código puede diferir ligeramente. En ese caso, probablemente necesitarás reemplazar el código de descarga del archivo con otra solución para descargar el archivo a la ubicación deseada.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)