• Viernes 1 de Noviembre de 2024, 13:33

Autor Tema:  Problema Al Hacer Un Filtro De Datos ¡¡¡  (Leído 993 veces)

joanca

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Problema Al Hacer Un Filtro De Datos ¡¡¡
« en: Lunes 13 de Marzo de 2006, 08:44 »
0
Buenos días a todos/as.

Estoy intentando hacer un Filtro de Datos y no me acaba de funcionar.

A partir de un DataSet enlazado con un DataGrid y a la vez con Controles de Texto al estilo Bindings :

*****************************************************************
...
myDataGrid.SetDataBinding(myDataSet, TABLE_NAME);

myBindingManagerBase = BindingContext[myDataGrid.DataSource, TABLE_NAME];
oBindingManagerBase.Position = 0;

myCurrencyManager = (CurrencyManager)this.BindingContext[myDataSet.Tables[TABLE_NAME]];
myCurrencyManager.Position = 0;

myTextBox1.DataBindings.Add(new Binding("Text", myDataSet, "Tabla.Campo1"));
myTextBox2.DataBindings.Add(new Binding("Text", myDataSet, "Tabla.Campo2"));
...
*****************************************************************


Intento montar un Sistema de Búsqueda y Filtrado de información a partir de un DataView en el que preparo los datos a buscar y se los paso al DataGrid para que los filtre :

****************************************************************
DataView myDataView = new DataView(myDataSet.Tables[0]);

...
myDataView.RowFilter = myDataRowFiltro["ColumnCampo"].ToString() + " " +
          myDataRowFiltro["ColumnCondicion"].ToString() + " '" +
          myDataRowFiltro["ColumnDatos"].ToString() + "' ";
...
            
oDataGrid.SetDataBinding(myDataView, "");
****************************************************************


Y realmente funciona, el DataGrid solamente muestra las condiciones que le he impuesto, pero el problema está en que se pierde la relación DataBindings con los Controles TextBox, y ahi me doy cuenta que quizás debería de actuar con otro Control tipo "DataViewManager", y así lo preparo enlazándolo con el DataGrid y con los Controles TextBox:

****************************************************************
DataViewManager myDataViewManager = new DataViewManager(myDataSet);
myDataGrid.SetDataBinding(myDataViewManager, TABLE_NAME);

myBindingManagerBase = BindingContext[myDataGrid.DataSource, TABLE_NAME];
oBindingManagerBase.Position = 0;

myCurrencyManager = (CurrencyManager)this.BindingContext[myDataSet.Tables[TABLE_NAME]];
myCurrencyManager.Position = 0;

myTextBox1.DataBindings.Add(new Binding("Text", myDataViewManager, "Tabla.Campo1"));
myTextBox2.DataBindings.Add(new Binding("Text", myDataViewManager, "Tabla.Campo2"));
****************************************************************


Pero cuando preparo y lanzo el filtro a buscar, no hace realmente nada :

***************************************************************
DataView myDataView = new DataView(myDataViewManager.myDataSet.Tables[0]);
...
myDataView.RowFilter = myDataRowFiltro["ColumnCampo"].ToString() + " " + myDataRowFiltro["ColumnCondicion"].ToString() + " '" + myDataRowFiltro["ColumnDatos"].ToString() + "' ";
...
            
myDataGrid.SetDataBinding(myDataView, TABLE_NAME);
****************************************************************


Y lo curioso del Caso es que si provoco un Filtro directamente sobre el DataViewManager, solamente funciona el primer SetDataBinding, el segundo ya no funciona :

***************************************************************
myDataViewManager.DataViewSettings[0].RowFilter = "Campo = '0001'";
myDataGrid.SetDataBinding(myDataViewManager, TABLE_NAME);

myDataViewManager.DataViewSettings[0].RowFilter = "Campo = '0002'";
myDataGrid.SetDataBinding(myDataViewManager, TABLE_NAME);
***************************************************************


En fin, como podeis ver tengo un poco de lio y no veo la solución.

Si alguien me puede ayudar, os lo agradezco.

Un Saludo.