PropertyManager y CurrencyManager

13/07/2005 - 09:31 por Enric | Informe spam
Hola,

He estado viendo las clases PropertyManager y CurrencyManager, y he llegado
a la conclusión de que la primera sirve para el enlace con fuente de datos
de un solo registro, y la segunda con fuentes con varios registros (o que
implementen IList).
Pero, si tengo un dataTable llenado con un solo registro (los registros de
esta tabla estan filtrados a partir de su clave primaria), veo que se sigue
creando un CurrencyManager.

El problema es que tengo un formulario con muchos textBox enlazados asi:
txtq.databindings.add("Text", _provision.tables["provisiones"], "codigo");

pero a la hora de grabar, el DataSet.HasChanges() siempre devuelve false
aunque se hayan modificado todos.

He probado con
BindingContext[_provision, "provisiones"].position = 0; //SIEMPRE hay un
solo registro en la tabla

y nada. No funciona.
Alguien sabe qué estoy haciendo mal?

grácias
 

Leer las respuestas

#1 Julio Casal
14/07/2005 - 07:14 | Informe spam
Hola Eric. Mira, lo que sucede es que no le estás dando la oportunidad al
mecanismo de databinding para que haga su trabajo, ya que al tener solo un
registro, pues nunca estás cambiando de registro y los cambios no se
asientan. Te recomiendo hagas lo siguiente:

Captura el contexto de enlace con algo así:
Dim cm As CurrencyManager = DirectCast(Me.BindingContext(_provision,
"provisiones"), CurrencyManager)

Cuando vayas a hacer un nuevo registro, solicita uno así:
cm.AddNew()

Y cuando ya hayas terminado de hacer los cambios, ejecuta esto:
cm.EndCurrentEdit()

Espero aquello pueda ayudarte amigo.

Saludos.

Julio Casal
.Net Solution Developer
MCAD
Grupo Lebed


"Enric" wrote:

Hola,

He estado viendo las clases PropertyManager y CurrencyManager, y he llegado
a la conclusión de que la primera sirve para el enlace con fuente de datos
de un solo registro, y la segunda con fuentes con varios registros (o que
implementen IList).
Pero, si tengo un dataTable llenado con un solo registro (los registros de
esta tabla estan filtrados a partir de su clave primaria), veo que se sigue
creando un CurrencyManager.

El problema es que tengo un formulario con muchos textBox enlazados asi:
txtq.databindings.add("Text", _provision.tables["provisiones"], "codigo");

pero a la hora de grabar, el DataSet.HasChanges() siempre devuelve false
aunque se hayan modificado todos.

He probado con
BindingContext[_provision, "provisiones"].position = 0; //SIEMPRE hay un
solo registro en la tabla

y nada. No funciona.
Alguien sabe qué estoy haciendo mal?

grácias




Preguntas similares