Ver Mensaje Individual
  #7 (permalink)  
Antiguo 17/12/2008, 17:55
hor_sharp
 
Fecha de Ingreso: noviembre-2008
Ubicación: Bergamo - Lombardia - Italia
Mensajes: 40
Antigüedad: 15 años, 6 meses
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.