Pregunta

Tengo una cuadrícula que está vinculada a una colección.Por alguna razón que no sé, ahora cuando hago alguna acción en el grid, el grid no se actualiza.

Situación :Cuando hago clic en un botón en la cuadrícula, aumenta un valor que está en la misma línea.Cuando hago clic, puedo depurar y ver el incremento del valor, pero el valor no cambia en la cuadrícula. PERO cuando hago clic en el botón, minimizo y restauro las ventanas, el valor se actualiza...¿Qué tengo que hacer para que el valor se actualice como antes?

ACTUALIZAREsto NO ESTÁ RESUELTO pero acepté la mejor respuesta por aquí.

No se soluciona porque funciona como siempre cuando los datos son de la base de datos pero no del caché.Los objetos se serializan y se lanza el proceso, el evento se pierde.Es por eso que los reconstruyo y funciona por lo que sé porque puedo interactuar con ellos PERO parece que no funciona para la actualización de la cuadrícula por una razón desconocida.

¿Fue útil?

Solución

Para que el enlace sea bidireccional, desde el control hasta la fuente de datos y desde la fuente de datos hasta el control, la fuente de datos debe implementar eventos de notificación de cambio de propiedad, en una de las 2 formas posibles:

  • Implementar el INotifyPropertyCambiado interfaz y genera el evento cuando las propiedades cambian:

    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            NotifyPropertyChanged("Name");
        }
      }
    }
    
  • Implemente un evento modificado para cada propiedad que deba notificar a los controles cuando cambie.El nombre del evento debe tener el formato Nombre de la propiedadCambió :

    public event EventHandler NameChanged;
    
    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            if (NameChanged != null) NameChanged(this, EventArgs.Empty);
        }
      }
    }
    

    *como nota, los valores de su propiedad son los correctos después de maximizar la ventana, porque el control vuelve a leer los valores de la fuente de datos.

Otros consejos

Parece que necesitas llamar a DataBind en tu código de actualización.

Estoy usando el objeto BindingSource entre mi Colección y mi Grid.Normalmente no tengo que llamar a nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top