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

Problema con RowFilter en c#

Estas en el tema de Problema con RowFilter en c# en el foro de .NET en Foros del Web. Hola a todos; bueno, en la siguiente linea de codigo, que asi tal cual como esta me filtra la tabla (dtPlatos) todos los registros que ...
  #1 (permalink)  
Antiguo 17/12/2008, 10:47
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 16 años
Puntos: 1
Problema con RowFilter en c#

Hola a todos; bueno, en la siguiente linea de codigo, que asi tal cual como esta me filtra la tabla (dtPlatos) todos los registros que dicen "principal" en la columna TipoDePlato;

DataView dvPlatos = new DataView(dtPlatos,"TipoDePlato = 'principal'","TipoDePlato ASC",DataViewRowState.OriginalRows);

pero que pasa, yo tengo una variable que se llama filtro1 del tipo string que puede ser:

filtro1 = "principal"; ò filtro1 = "entrada"; ò filtro1 = "postre";

si yo reemplazo en la linea de codigo del rowFilter, 'principal', por la variable filtro1

DataView dvPlatos = new DataView(dtPlatos,"TipoDePlato = filtro1","TipoDePlato ASC",DataViewRowState.OriginalRows);

compilo y cuando hago click en el boton correspondiente para hacer el filtro aparece el mensaje "NO SE PUEDE ENCONTRAR LA COLUMNA [filtro1]". Probe poniendolo la variable entre comillas simples y nada; se que posiblemente tenga que usar el simbolo + para hacer este tipo de cosas pero como recien empiezo a programar en c# no se como sera.

Desde ya muchas gracias a todas las respuestas. Saludos
  #2 (permalink)  
Antiguo 17/12/2008, 11:32
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 1 mes
Puntos: 8
Respuesta: Problema con RowFilter en c#

Lo que necesitas es filtrar informacion que esta en un set de datos?

si es asi, entra a mi blog por ahi hay varias cosas que te pueden servir..

Saludos.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."

Última edición por mvazquez; 17/12/2008 a las 11:42
  #3 (permalink)  
Antiguo 17/12/2008, 12:16
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema con RowFilter en c#

Hola, mvazquez. gracias por tu pronta respuesta, entre a tu blog y hay buena info, agradezco tu ayuda. pero sigo sin encontrar la solucion.
  #4 (permalink)  
Antiguo 17/12/2008, 14:16
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 1 mes
Puntos: 8
Respuesta: Problema con RowFilter en c#

Te mando este metodo que a mi me funciona de maravilla para filtrar DataTable, ya sea que "Postre" lo metas en una variable o se lo mandes directo.

String filtro1 = "postre";


FiltrarDataTable(dtPlatos,"TipoDePlato = postre", "TipoDePlato ASC");
FiltrarDataTable(dtPlatos,"TipoDePlato = " & filtro1 , "TipoDePlato ASC");


Saludos.


Código:
public DataTable FiltrarDataTable(DataTable dt, string filtro, string orden)
{
    DataRow[] rows;
    DataTable dtNew;

    try
    {
        dtNew = dt.Clone();
        rows = dt.Select(filtro, orden);

        foreach (DataRow dr in rows)
        {
            dtNew.ImportRow(dr);
        }

        return dtNew;
    }
    catch (Exception ex)
    {
        throw new Exception("FiltrarDataTable" + " - " + ex.Source + " - " + ex.Message);
    }
}
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #5 (permalink)  
Antiguo 17/12/2008, 16:38
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema con RowFilter en c#

mvazquez gracias por tu ayuda, esa funcion que me mandaste la guarde porque te cuento; antes queria filtrar la tabla con un dataTable.Select() y la verdad q no me salia , asi que pense en hacerlo filtrando el DataView, supuestamente la parte a donde vos haces el filtro en la funcion que me mandaste, eso mismo no me tendria que funcionar en donde hago el filtro en el DataView,RowFilter yo?
Probe poniendo eso y me tiraba un error al compilar diciendo q el simbolo & no se puede usar en un string ( probe tambien con el signo +) , fijate si no te falto alguna comilla o algo asi. Desde ya un abrazo y gracias por la ayuda que me estas dando, la verdad que busco por todos lados y no puedo solucionarlo, si no, no estaria molestando a los demas.
  #6 (permalink)  
Antiguo 17/12/2008, 16:53
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 1 mes
Puntos: 8
Respuesta: Problema con RowFilter en c#

veamos.........
intenta con esto:

int filtro = 2;
string Orden = "TipoDePlato ASC";

FiltrarDataTable(dtProcesos, "Periodo = " + filtro, Orden);
FiltrarDataTable(dtProcesos, "Periodo = " + filtro, "TipoDePlato ASC");

Este debe de funcionarte sin problema

Si no me comentas....
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #7 (permalink)  
Antiguo 17/12/2008, 17:55
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema con RowFilter en c#

probe asi como me dijiste y nada, sabes que cuando pongo a la variable filtro1 , me aparece una exepcion que dice: " no se puede encontrar la columna principal" (me aparece principal porque es el CheckBox que estoy seleccionando, pero si selecciono entrada el mensaje se repite pero diciendo que no se encontro la columna entrada), ahora te pego el codigo del boton que hace lo del filtro y te explico como funciona.


private void btnPlatos_Click_1(object sender, EventArgs e)
{
if (filtro1 != "" && filtro2 !="")
{
DataView dvPlatos = new DataView(dtPlatos, "TipoDePlato = 'principal'", "TipoDePlato ASC", DataViewRowState.OriginalRows);
GridPlatos.DataSource = dvPlatos;
}
else
{
MessageBox.Show("NO SE ENCONTRARON PLATOS CON LAS OPCIONES ELEGIDAS, SE MOSTRARAN TODOS");
GridPlatos.DataSource = dtPlatos;
}
filtro1 = ""; // limpio las variables, por si se quiere consultar de nuevo
filtro2 = "";

// esto limpia todos los CheckBox adentro del groupBox

foreach (Control c in this.grpbox_Platos.Controls) se limpian los CheckBox
{
if (c is CheckBox)
((CheckBox)c).Checked = false;
}
}

Asi como esta es como funciona, en el pograma tengo varios CheckBox separados en dos grupos, por eso filtro1 y filtro2, filtro uno puede tomar los valores: entrada, principal, postre, y filtro2 : verduras, legumbres etc. pero estoy tratando de filtrar primero por uno y despues trato por los dos.
En el IF si seleccionaron los CheckBox se hace el filtro, si no en el else, se muestran todos los datos de la tabla.

// dtPlatos se cargo en el Load del form
//filtro1 y filtro2 variables globales tipo string
// filtro1 puede tomar los valores "principal", "entrada","postre";
//filtro2 "verdura", "carne", "legumbres", etc porque este ahora no lo uso para nada, si no puedo filtrar por uno no lo voy a poder hacer para dos, jejeje
//dvPlatos es un DataView que despues se lo asigno al DataGridView
// si se puede filtrar se muestran los datos filtrados, por eso: GridPlatos.DataSource = dvPlatos; sino se muestran en el else todos los datos de la tabla en el DatagridView, por eso: GridPlatos.DataSource = dtPlatos;

Espero que lo pueda solucionar, igual voy a seguir buscando , desde ya sigo agradeciendo.
  #8 (permalink)  
Antiguo 17/12/2008, 17:58
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema con RowFilter en c#

las llaves del codigo salen todas en una misma columna, pero no se como ponerlo como pusiste vos mvazquez, mil disculpas
  #9 (permalink)  
Antiguo 18/12/2008, 15:36
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 20 años, 1 mes
Puntos: 8
Respuesta: Problema con RowFilter en c#

Como que no te entendi a que te refieres.....
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:53.