Principales respuestas
Extraer datos del datasource de un dataGridView

Pregunta
-
Hola!
A ver si me pueden ayudar, yo tengo una clase Persona, de esa clase creo una lista tal que así:
List<Persona> personas = new Persona();
Luego, en un dataGridView.datasource = personas.toArray();
me lo muestra bien, ahora la pregunta es: ¿Existe algún modo de extraer del datagridview la fuente de datos?. algo como esto:
List<Persona> listaExtraida = new Persona();
listaExtraida = dataGridView.datasource.get o algo similar, es decir, volver a tener la lista pero extrayendola del dataGridView. Un saludo y gracias
lunes, 23 de enero de 2023 8:17
Respuestas
-
Primero, no es necesario que pongas .ToArray() al asignar la lista. El DataSource admite directamente un List. Si lo conviertes en array, entonces cuando lo recuperes tienes que recuperar un Array en lugar de un List.
Suponiendo que lo dejes como List, puedes recuperarlo haciendo un cast desde el DataSource:
List<Persona> listaExtraida = (List<Persona>)dataGridView.DataSource;
Si lo dejas como array, entonces al recuperarlo necesitas hacer el cast a array:
Persona[] arrayExtraido = (Persona[])dataGridView.DataSource;
Y si quieres poder tomar lista o array indistintamente, usa la interfaz IEnumerable:
IEnumerable<Persona> datosExtraidos = (IEnumerable<Persona>)dataGridView.DataSource;
- Marcado como respuesta Carmelo J. Morales Muñoz lunes, 23 de enero de 2023 15:03
lunes, 23 de enero de 2023 12:37
Todas las respuestas
-
Hola:
En este ejemplo hay una lista de clientes "original" que carga un DataGridView llamado dgrLista
La lista de clientes "copia" se llama ListaRepe.
El codigo seria:
VB
Dim ListaRepe As New List(Of Cliente)
ListaRepe = CType(dgrLista.DataSource, List(Of Cliente))
C*
{
List<Cliente> ListaRepe = new List<Cliente>();
ListaRepe = (List<Cliente>)dgrLista.DataSource;
}
Un saludo desde Bilbo
Carloslunes, 23 de enero de 2023 12:37 -
Primero, no es necesario que pongas .ToArray() al asignar la lista. El DataSource admite directamente un List. Si lo conviertes en array, entonces cuando lo recuperes tienes que recuperar un Array en lugar de un List.
Suponiendo que lo dejes como List, puedes recuperarlo haciendo un cast desde el DataSource:
List<Persona> listaExtraida = (List<Persona>)dataGridView.DataSource;
Si lo dejas como array, entonces al recuperarlo necesitas hacer el cast a array:
Persona[] arrayExtraido = (Persona[])dataGridView.DataSource;
Y si quieres poder tomar lista o array indistintamente, usa la interfaz IEnumerable:
IEnumerable<Persona> datosExtraidos = (IEnumerable<Persona>)dataGridView.DataSource;
- Marcado como respuesta Carmelo J. Morales Muñoz lunes, 23 de enero de 2023 15:03
lunes, 23 de enero de 2023 12:37 -
Gracias por la ayuda, la verdad es que no se como no me funciónó.... estaba un poco atascado y no veía forma de hacerlo, yo estaba buscando alguna funcion mas parecida a java del tipo getFuenteDatos, o similar. Muchas gracias, es justo lo que estaba buscando.
Un saludo.
lunes, 23 de enero de 2023 15:05 -
Hola Carmelo J. Morales Muñoz,
Gracias por levantar tu consulta en los foros de MSDN.
Gracias a Alberto Poblacion por la respuesta.
Cerraremos el Hilo, por ende si tiene alguna otra consulta por favor genera otra consulta para que la comunidad de foros te pueda asesorar.Siempre es un placer atender tus consultas!
Benjamin G.
--------------------------------------------------------------------------------
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
martes, 31 de enero de 2023 6:16Moderador