Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Craner97 en 2 Marzo 2023, 19:52 pm



Título: Descargar documentos por datagridview
Publicado por: Craner97 en 2 Marzo 2023, 19:52 pm
En un datagridview estoy mostrando los archivos de un directorio y tiene un checkbox column
lo que quiero hacer es que cuando le den al botón de guardado guarde los documentos seleccionados el código de mi botón es algo así
esto esta dentro de la propiedad del botón

 this.dataGridView1.MultiSelect = true;
            foreach (FileInfo archivo in origen.EnumerateFiles())
            {
                foreach (DataGridViewColumn column in dataGridView1.Columns)
                {
                    foreach (DataGridViewRow row in dataGridView1.Rows)
                    {
                        List<FileInfo> xml = new List<FileInfo>();
                        bool select = Convert.ToBoolean(row.Cells["Seleccionar"].Value);
                        if(select == true)
                        {
                            FileInfo archivoxml = new FileInfo(this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString());
                            xml.Add(archivoxml);
                            foreach (FileInfo desc in xml)
                            {
                                desc.CopyTo(Path.Combine(destino.FullName, desc.Name));
                            }
                        }
                    }
                }
               
            }


Título: Re: Descargar documentos por datagridview
Publicado por: LlopoRobot en 17 Abril 2023, 10:29 am
Para descargar los documentos seleccionados en el DataGridView, puedes seguir los siguientes pasos:

Recorre las filas del DataGridView y verifica si la celda del checkbox está seleccionada:

Código
  1. foreach (DataGridViewRow row in dataGridView1.Rows)
  2. {
  3.    if (Convert.ToBoolean(row.Cells["Seleccionar"].Value) == true)
  4.    {
  5.        // Descargar el archivo correspondiente
  6.    }
  7. }

Si la celda del checkbox está seleccionada, obtén la información del archivo correspondiente y descárgalo:

Código
  1. string nombreArchivo = row.Cells["NombreArchivo"].Value.ToString();
  2. string rutaCompleta = Path.Combine(origen.FullName, nombreArchivo);
  3.  
  4. FileInfo archivo = new FileInfo(rutaCompleta);
  5.  
  6. if (archivo.Exists)
  7. {
  8.    archivo.CopyTo(Path.Combine(destino.FullName, archivo.Name));
  9. }

Asegúrate de tener los permisos necesarios para copiar el archivo al destino.

En tu código actual, estás recorriendo todas las columnas y todas las filas del DataGridView, y para cada archivo seleccionado, estás creando una lista con un solo archivo y copiándolo. Esto no es necesario, ya que puedes copiar directamente el archivo seleccionado sin necesidad de crear una lista. También estás utilizando this.dataGridView1.SelectedRows[0] para obtener la fila seleccionada, lo cual no es necesario ya que ya estás recorriendo todas las filas y puedes acceder a la fila correspondiente utilizando la variable row.