Привязка сетки C # не обновляется
-
02-07-2019 - |
Вопрос
У меня есть сетка, которая привязана к коллекции.По какой-то причине, которую я не знаю, теперь, когда я выполняю какое-то действие в сетке, сетка не обновляется.
Ситуация :Когда я нажимаю кнопку в сетке, это увеличивает значение, которое находится в той же строке.Когда я нажимаю, я могу выполнить отладку и увидеть увеличение значения, но значение в таблице не меняется. НО когда я нажимаю кнопку, сворачиваю и восстанавливаю окна, значения обновляются...что мне нужно сделать, чтобы значение было обновлено, как это было раньше?
Обновить Это НЕ РЕШЕНО, но я принял лучший ответ здесь.
Это не решаемая проблема, потому что она работает как обычно, когда данные поступают из базы данных, но не из кэша.Объекты сериализуются и выбрасываемые процессом события теряются.Вот почему я создаю их обратно, и это работает для того, что я знаю, потому что я могу взаимодействовать с ними, НО, похоже, это не работает для обновления сетки по неизвестной причине.
Решение
Чтобы привязка была двунаправленной, от элемента управления к источнику данных и от источника данных к элементу управления источник данных должен реализовывать события уведомления об изменении свойств одним из двух возможных способов:
Внедрить 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 между моей коллекцией и моей сеткой.Обычно мне не нужно ничему звонить.