Связывание сетки C # не обновляется - PullRequest
2 голосов
/ 23 сентября 2008

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 23 сентября 2008

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

  • Реализация интерфейса INotifyPropertyChanged и вызов события при изменении свойств:

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

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

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

0 голосов
/ 23 сентября 2008

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

0 голосов
/ 23 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...