Re[2]: BindingSource
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 18.12.08 06:56
Оценка: 2 (1)
Здравствуйте, Ziggi111, Вы писали:


F>>Помогите разобраться !!

F>>У контрола есть DataSourse типа BindingSource, У Неготоже есть DataSourse типа List<T>.
F>>Вопрос как контрол может узнать о изменение колекции List-а?

F>>Знаю одно DataGridView Вроде как то догадывается но КАК??

Z>А это разве не помогает?
Z>BindingSource.ListChanged += new ListChangedEventHandler (BindingSource_ListChanged);

Нет, не поможет.
Для того, чтобы BindingSource мог уведомлять об изменении коллекции, его источник данных должен реализовывать интерфейс IBindingSource.
Т.е. если ты делаешь myBindingSource.DataSource = typeof(Foo), тогда нижележащим контейнером данных для BindingSource будет BindingList<T>, который поддерживает уведомления и твой грид будет обновляться автоматически.
А если ты сделаешь так: myBindingSource.DataSource = new List<Foo>();, то сам BindingSource никогда не сможет узнать об изменении коллекции и грид обновляться не будет.
Вывод:
делай так:

myBindingSource.DataSource = typeof(Foo);

и операции над коллекцией выполняй непосредственно над объектом BindingSource, т.е. так:

myBindingSource.Add(new Foo());
myBindingSource.Remove();

и т.д.
Тогда грид будет обновляться автоматом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.