2009-09-16 5 views
1

У меня есть DataGridView, который я связывающий как так:DataGridView не обновляется при изменении связанных элементов?

companies = new BindingList<Company>(PersistenceManager.Instance.RetrieveAll<Company>(SessionAction.BeginAndEnd)); 
bindingSource.DataSource = companies; 
potentialInvestorDataGridView.DataBindings.Add("DataSource", bindingSource, "PotentialInvestors"); 

Проблема заключается в том, когда я добавить к списку PotentialInvestors

Company company = bindingSource.Current as Company; 
company.PotentialInvestors.Add (new Investor ()); 

сетка данные не обновляются с новой строкой. Я пытался позвонить

bindingSource.ResetCurrentItem(); 
potentialInvestorDataGridView.EndEdit(); 
potentialInvestorDataGridView.Refresh(); 

Но ничего не обновляет сетку данных. (Если я закрою диалог и снова открою его, то теперь будут отображаться элементы).

Что нужно сделать для правильного обновления?

ответ

1

Изменения распространяются только в том случае, если базовый источник данных (результат PersistenceManager.Instance.RetrieveAll<Company>(...)) поддерживает механизм уведомления. Я уверен, что для того, чтобы он работал, IBindingList должен поддерживаться самим источником данных. У вас есть список интерфейсов, которые реализует источник данных?

Редактировать

Вы можете вызвать вручную значение Reset на ListChanged события (что сетка наблюдает за), позвонив ResetBindings на GridView. Это, однако, заставит сетку обновить все данных, а не только то, что изменилось.

+0

Как класс моей компании, так и инвестора поддерживают интерфейс INotifyPropertyChanged, поэтому они должны уведомлять об обновлениях свойств. В любом случае, я должен сказать, что datagrid обновляется каким-то образом? – Kyle

Смежные вопросы