C sharp - Buscar un elemento en un BindingSource

 
Vista:

Buscar un elemento en un BindingSource

Publicado por Hernan (1 intervención) el 18/11/2008 14:11:54
Hola a toda aquella persona que este leyendo estas lineas.
El motivo de este "post", como lo menciona el asunto, es porque necesito buscar un elemento en un BindingSource. Para poder ponerlos en contexto les comento lo que he realizado hasta el momento: Yo tengo una UI de DataEntry en la cual se me presenta una serie de clientes a los cuales hay que cargarles ciertos datos. La informacion de los mismos los obtengo a traves de un BindingSource que lo inicializo a partir de una IList<T>. Necesito hacer un buscador y para ello cree un procedimiento que me carga en un combo todas las propiedades que manipula mi BindingSource para que el operador eliga una de ellas, introduzca el valor, y lo busque. Tal procedimiento se los copio a continuacion:

private PropertyDescriptor dady = null;
private readonly Collection<PropertyDescriptor> Propiedades = new Collection<PropertyDescriptor>();
private void LoadProperties(PropertyDescriptorCollection pdc)
{
bool haveProperties = false;

foreach (PropertyDescriptor entry in pdc)
{
if (!entry.Name.Contains("Value") && !entry.Name.Contains("BrokenRulesCollection") && (dady != entry))
{
if (entry.GetChildProperties().Count > 0)
{
dady = entry;
LoadProperties(entry.GetChildProperties());
}
else
{
if ((entry.Name.Contains("Is")) ||
(entry.Name.Equals("Id")) ||
(entry.Name.Equals("Length")) ||
(entry.Name.Contains("Have")) ||
(entry.Name.Contains("Has")) ||
(entry.Name.Contains("Count")) ||
(entry.Name.Contains("Allow")) ||
(entry.Name.Contains("Events")))
{

}
else
{
if (!Propiedades.Contains(entry))
{
haveProperties = true;
Propiedades.Add(entry);
}
}
}
}

if (!Propiedades.Contains(dady) && !haveProperties)
Propiedades.Add(dady);

}
}

La coleccion Propiedades la cargo en un ComboBox de otra UI denominada "BuscarPor" en la cual, como mencione anteriormente, escojo la propiedad y en un TextEdit introduzco un valor para dicha propiedad y busco. Esta ultima accion la realizo con el siguiente codigo:

IBindingList bl = (IBindingList) assaSingleVisitEdit1.WvDataSource.List;
assaSingleVisitEdit1.WvDataSource.Position = bl.Find(bp.PropertySelected, bp.ValueToFound);

Referencias:
assaSingleVisitEdit1 = UI DataEntry
bp = UI BuscarPor

Al hacer esto, el programa me tira el siguiente error:
{"Specified method is not supported. - System.Collections.ListDictionaryInternal"}

No encuentro el modo de solucionarlo y espero que ustedes puedan ayudarme. Motivo por el cual les estaria muy agradecido. Por otro lado, acepto tambien otras propuestas o formas para poder realizar la busqueda que trato de realizar.

Desde ya, muchas gracias!!
Atentamente, Hernán.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder