Filtrar los dotos de un DataGridView

12/02/2009 - 16:54 por Anti_Work | Informe spam
Hola. quiero que se filtre un datagridview segun las letras que se van
ingresando en una caja de texto. En el evento TextChanged del textbox, escibi
el esto:

DataView dv = new DataView((DataTable)DGV.DataSource);
dv.RowFilter = "ApyNom like '" + txtApB.Text + "*'";
DGV.DataSource = dv;

y funciona solo con la primera letra ingresada, al ingresar la segunda se
provoca un error porque "DGV.DataSource" en principio es un DataTable. Pero
luego de la aplicación del filtro se convierte en un DataGridView, y esto no
se puede convertir en un DataTable.

Como se resuleve esto?

Saludos

Preguntas similare

Leer las respuestas

#1 María
12/02/2009 - 17:07 | Informe spam
Quizas puedas usar desde un principio un DataView en vez del DataTable
directamente. Prueba a usar DataTable.DefaultView y luego tambien le pones
el RowFilter a ese DefaultView.



"Anti_Work" escribió en el
mensaje news:
Hola. quiero que se filtre un datagridview segun las letras que se van
ingresando en una caja de texto. En el evento TextChanged del textbox,
escibi
el esto:

DataView dv = new DataView((DataTable)DGV.DataSource);
dv.RowFilter = "ApyNom like '" + txtApB.Text + "*'";
DGV.DataSource = dv;

y funciona solo con la primera letra ingresada, al ingresar la segunda se
provoca un error porque "DGV.DataSource" en principio es un DataTable.
Pero
luego de la aplicación del filtro se convierte en un DataGridView, y esto
no
se puede convertir en un DataTable.

Como se resuleve esto?

Saludos
Respuesta Responder a este mensaje
#2 Anti_Work
12/02/2009 - 22:31 | Informe spam
Muchas Gracias. ya lo resolvi de otra manera. No es muy elegante, pero
funciona. Este es el codigo:

DataView dv;

if (DGV.DataSource.GetType().Name == "DataTable")
dv = new DataView((DataTable)DGV.DataSource);
else
dv=(DataView)DGV.DataSource;
.

De esta forma obtengo siempre un DataView, al cual le puedo aplicar el
filtro y establecerlo como origen de datos.
De todos modos te agradezco mucho tu respuesta. Me sirve para seguir
investigando y aprendiendo y tener varias alternativas para hacer las cosas.

Saludos

"María" wrote:


Quizas puedas usar desde un principio un DataView en vez del DataTable
directamente. Prueba a usar DataTable.DefaultView y luego tambien le pones
el RowFilter a ese DefaultView.



"Anti_Work" escribió en el
mensaje news:
> Hola. quiero que se filtre un datagridview segun las letras que se van
> ingresando en una caja de texto. En el evento TextChanged del textbox,
> escibi
> el esto:
>
> DataView dv = new DataView((DataTable)DGV.DataSource);
> dv.RowFilter = "ApyNom like '" + txtApB.Text + "*'";
> DGV.DataSource = dv;
>
> y funciona solo con la primera letra ingresada, al ingresar la segunda se
> provoca un error porque "DGV.DataSource" en principio es un DataTable.
> Pero
> luego de la aplicación del filtro se convierte en un DataGridView, y esto
> no
> se puede convertir en un DataTable.
>
> Como se resuleve esto?
>
> Saludos



Respuesta Responder a este mensaje
#3 Jose TH >>
13/02/2009 - 00:21 | Informe spam
La respuesta que te dio Maria hace lo mismo que tu trataste de hacer pero
mas facil.

En vez de crear un nuevo DataView, usa la propiedad DefaultView del
DataTable que para eso está.




"Anti_Work" wrote in message
news:
Muchas Gracias. ya lo resolvi de otra manera. No es muy elegante, pero
funciona. Este es el codigo:

DataView dv;

if (DGV.DataSource.GetType().Name == "DataTable")
dv = new DataView((DataTable)DGV.DataSource);
else
dv=(DataView)DGV.DataSource;
.

De esta forma obtengo siempre un DataView, al cual le puedo aplicar el
filtro y establecerlo como origen de datos.
De todos modos te agradezco mucho tu respuesta. Me sirve para seguir
investigando y aprendiendo y tener varias alternativas para hacer las
cosas.

Saludos

"María" wrote:


Quizas puedas usar desde un principio un DataView en vez del DataTable
directamente. Prueba a usar DataTable.DefaultView y luego tambien le
pones
el RowFilter a ese DefaultView.



"Anti_Work" escribió en el
mensaje news:
> Hola. quiero que se filtre un datagridview segun las letras que se van
> ingresando en una caja de texto. En el evento TextChanged del textbox,
> escibi
> el esto:
>
> DataView dv = new DataView((DataTable)DGV.DataSource);
> dv.RowFilter = "ApyNom like '" + txtApB.Text + "*'";
> DGV.DataSource = dv;
>
> y funciona solo con la primera letra ingresada, al ingresar la segunda
> se
> provoca un error porque "DGV.DataSource" en principio es un DataTable.
> Pero
> luego de la aplicación del filtro se convierte en un DataGridView, y
> esto
> no
> se puede convertir en un DataTable.
>
> Como se resuleve esto?
>
> Saludos



Respuesta Responder a este mensaje
#4 Anti_Work
13/02/2009 - 15:43 | Informe spam
Hola,
Intenté usar el defaultview pero no se como hacerlo, no se como se accede a
él.
escribí "DGV." y en la lista que se desplega, no figura. Tampoco lo
encuentro en "DGV.Datasource."
Si son tan amables y me dan una ayudita mas, se lo agradeceré.

Muchas gracias desde ya.

Saludos
Respuesta Responder a este mensaje
#5 Jose TH
13/02/2009 - 15:53 | Informe spam
DefaultView es una propiedad del DataTable, NO del datagridview.

Puedes ver más detalles en la ayuda.




"Anti_Work" escribió en el
mensaje news:
Hola,
Intenté usar el defaultview pero no se como hacerlo, no se como se accede
a
él.
escribí "DGV." y en la lista que se desplega, no figura. Tampoco lo
encuentro en "DGV.Datasource."
Si son tan amables y me dan una ayudita mas, se lo agradeceré.

Muchas gracias desde ya.

Saludos

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida