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.