Вопрос

У меня есть сетка, которая привязана к коллекции.По какой-то причине, которую я не знаю, теперь, когда я выполняю какое-то действие в сетке, сетка не обновляется.

Ситуация :Когда я нажимаю кнопку в сетке, это увеличивает значение, которое находится в той же строке.Когда я нажимаю, я могу выполнить отладку и увидеть увеличение значения, но значение в таблице не меняется. НО когда я нажимаю кнопку, сворачиваю и восстанавливаю окна, значения обновляются...что мне нужно сделать, чтобы значение было обновлено, как это было раньше?

Обновить Это НЕ РЕШЕНО, но я принял лучший ответ здесь.

Это не решаемая проблема, потому что она работает как обычно, когда данные поступают из базы данных, но не из кэша.Объекты сериализуются и выбрасываемые процессом события теряются.Вот почему я создаю их обратно, и это работает для того, что я знаю, потому что я могу взаимодействовать с ними, НО, похоже, это не работает для обновления сетки по неизвестной причине.

Это было полезно?

Решение

Чтобы привязка была двунаправленной, от элемента управления к источнику данных и от источника данных к элементу управления источник данных должен реализовывать события уведомления об изменении свойств одним из двух возможных способов:

  • Внедрить INotifyPropertyChanged ( Инотифицированный параметр ) интерфейс и вызывает событие при изменении свойств :

    public string Name 
    {
      get
      {
        return this._Name;
      }
      set
      {
        if (value != this._Name)
        {
            this._Name= value;
            NotifyPropertyChanged("Name");
        }
      }
    }
    
  • Добавьте измененное событие для каждого свойства, которое должно уведомлять элементы управления о его изменении.Название события должно быть в форме Имя свойстваИзмененный :

    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);
        }
      }
    }
    

    * обратите внимание, что значения ваших свойств являются правильными после разворачивания окна, поскольку элемент управления повторно считывает значения из источника данных.

Другие советы

Похоже, вам нужно вызвать DataBind в вашем коде обновления.

Я использую объект BindingSource между моей коллекцией и моей сеткой.Обычно мне не нужно ничему звонить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top