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

и т.д.
Тогда грид будет обновляться автоматом.
BindingSource
От: fabio Узбекистан  
Дата: 17.12.08 20:38
Оценка:
Помогите разобраться !!
У контрола есть DataSourse типа BindingSource, У Неготоже есть DataSourse типа List<T>.
Вопрос как контрол может узнать о изменение колекции List-а?

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

18.12.08 00:33: Перенесено модератором из '.NET' — TK
controls .net
Re: BindingSource
От: Ziggi111 Россия  
Дата: 18.12.08 06:02
Оценка:
Здравствуйте, fabio, Вы писали:

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

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

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

А это разве не помогает?
BindingSource.ListChanged += new ListChangedEventHandler (BindingSource_ListChanged);
Re[3]: BindingSource
От: fabio Узбекистан  
Дата: 18.12.08 19:58
Оценка:
Здравствуйте, SergeyT., Вы писали:

Спасибо за помощь.
Теперь конкретно раззобрался.
Re[4]: BindingSource
От: _FRED_ Черногория
Дата: 19.12.08 14:12
Оценка:
Здравствуйте, fabio, Вы писали:

F>Спасибо за помощь.

F>Теперь конкретно раззобрался.

Если "снаружи", за пределом биндингов и UI, хочется всё-же работать в типизированным списком IList<T>, то вместо List<T> надо попросту использовать BindingList&lt;T&gt;. Этот класс строготипизирован, реализует IList<T> и сообщает о том, что его содержимое изменили.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.