Foros del Web » Programación para mayores de 30 ;) » .NET »

Obtener DataTable resultante de un DataView

Estas en el tema de Obtener DataTable resultante de un DataView en el foro de .NET en Foros del Web. Muy buenas. He creado un DataView a partir de una DataTable. Posteriormente le aplico una serie de filtros y lo muestro en un DataGrid. Sin ...
  #1 (permalink)  
Antiguo 18/05/2005, 10:47
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Obtener DataTable resultante de un DataView

Muy buenas. He creado un DataView a partir de una DataTable. Posteriormente le aplico una serie de filtros y lo muestro en un DataGrid. Sin embargo, la tabla que de origen sigue siendo la misma.

Me gustaría obtener una nueva tabla a partir de los datos ya filtrados del DataView. ¿Cómo lo hago?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 18/05/2005, 11:39
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Ya probaste de ésta forma:

Cita:
Dim dv As DataView
Dim dt As DataTable
...
....


dt = dv.Table
...
Grid.DataSource = dt
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 19/05/2005, 05:39
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Gracias RootK por responder. Sí, ya probé eso, o al menos eso creo.

Te explico los pasos que sigo.

Primero cargo una tabla con el resultado de la consulta a la base de datos.
Supongamos que la tabla tiene inicialmente 10 filas.
Segundo, esa tabla la agrego a un DataView al cual le aplico una serie de filtros que descartan 4 filas.
Tras aplicar los filtros indico que la fuente de datos de un DataGrid es el dataview, por lo que en el Datagrid sólo aparecen 6 filas (10 - 4).
Finalmente, en una nueva tabla, hago lo que me indicaste, es decir, dt = dv.table.
Pues bien, esta última tabla vuelve a tener 10 filas, lo que significa que los filtros del DataView no se aplican a la tabla.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 19/05/2005, 07:35
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Me costó pero lo conseguí ....

Explico los pasos:

Primero creo una nueva tabla y la doto de la estructura de la original:

Código:
Dim nTabla As DataTable
        nTabla = dt.Clone
Luego le aplico a la tabla original el mismo filtro que utilicé para el DataView, siendo filtro el StringBuilder que usé para crearlo. Con ello se seleccionan las filas que pasen el filtro:

Código:
Dim drFiltrada As DataRow()
        drFiltrada = dt.Select(filtro.ToString)
Finalmente añado una a una las filas seleccionadas a la nueva tabla:

Código:
For i As Integer = 0 To drFiltrada.Length - 1
            nTabla.Rows.Add(drFiltrada(i).ItemArray)
        Next
Ya tenenmos entonces una tabla con la misma estructura que la original pero con datos filtrados.

¿Alguna sugerencia o mejora?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 15/07/2010, 14:58
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Obtener DataTable resultante de un DataView

Cita:
Iniciado por Bravenap Ver Mensaje
Me costó pero lo conseguí ....

Explico los pasos:

Primero creo una nueva tabla y la doto de la estructura de la original:

Código:
Dim nTabla As DataTable
        nTabla = dt.Clone
Luego le aplico a la tabla original el mismo filtro que utilicé para el DataView, siendo filtro el StringBuilder que usé para crearlo. Con ello se seleccionan las filas que pasen el filtro:

Código:
Dim drFiltrada As DataRow()
        drFiltrada = dt.Select(filtro.ToString)
Finalmente añado una a una las filas seleccionadas a la nueva tabla:

Código:
For i As Integer = 0 To drFiltrada.Length - 1
            nTabla.Rows.Add(drFiltrada(i).ItemArray)
        Next
Ya tenenmos entonces una tabla con la misma estructura que la original pero con datos filtrados.

¿Alguna sugerencia o mejora?

Gracias y un saludo.
Usa mejor esto:


DataView dv = new DataView(dt); //asumiendo que dt es el datatable original
dv.Sort = "algo";
//demás acciones para filtrar u ordenar

DataTable dtResultante = dv.ToTable();


Este método (ToTable()) devuelve un datatable resultante del dataview. Solo es de buscar a fondo en todas las propiedades o métodos de lo que estemos utilizando.

Fuente: http://msdn.microsoft.com/es-es/library/a8ycds2f(v=VS.80).aspx
  #6 (permalink)  
Antiguo 19/07/2010, 10:21
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Respuesta: Obtener DataTable resultante de un DataView

Cita:
Iniciado por freezer27
Usa mejor esto:
No revivir post pasado por favor, leer la fecha de ultimo post antes de escribir

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:49.