Не работает обновление в BindingSource и DataGridView
От: voytovich_slava  
Дата: 26.02.06 06:26
Оценка:
Привет !

Использую .NET 2.0 в VS2005. Проблема в следующем. Есть класс User в котором находятся данные по пользователю. Есть класс UserCollection который наследует интерфейс ICollection <User>. Компонент bindSource1 класса BindingSource присвоен dataGridView1.DataSource.
Делаю:

UserCollection users;
users = new UserCollection ();

bindSource1.DataSource = users;
/* это как для примера */
dataGridView1.Columns["UserName"].DataPropertyName = "Name";

если users заполнить элементами и присвоить bindSource1.DataSource, то они покажутся в DataGridView, но после присваивания, можно добавлять элементы в users и даже после bindSource1.ResetBinding(false) они не будут показываться в DataGridView. Трассировка показала что они также после этой команды не появляются в bindSource.List.

Может кто подскажет почему bindSource1 или dataGridView1 не хотят перечитывать данные в коллекции?
Может надо еще какой интерфейс реализовать в UserCollection?

Вячеслав.
Re: Не работает обновление в BindingSource и DataGridView
От: SerkMan  
Дата: 27.02.06 07:07
Оценка:
Здравствуйте, voytovich_slava, Вы писали:

IBindingList или хотя бы IList.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Не работает обновление в BindingSource и DataGridView
От: voytovich_slava  
Дата: 27.02.06 16:33
Оценка:
Здравствуйте, SerkMan, Вы писали:

SM>Здравствуйте, voytovich_slava, Вы писали:


SM>IBindingList или хотя бы IList.


Вот блин. Прикольно однако. В MSDN говориться что типа даже просто ICollection поддерживается. А то что для того чтобы ResetBinding работал необходимо чтобы было наследование хотябы IList нигде не говориться.

Спасибо Большое. А то голову сломал пока понял.
Кстати, а IList<User> подойдет? Или обязательно IList?

Вячеслав.
Re[3]: Не работает обновление в BindingSource и DataGridView
От: _FRED_ Черногория
Дата: 27.02.06 16:53
Оценка:
Здравствуйте, voytovich_slava, Вы писали:

SM>>IBindingList или хотя бы IList.

_>Вот блин. Прикольно однако. В MSDN говориться что типа даже просто ICollection поддерживается. А то что для того чтобы ResetBinding работал необходимо чтобы было наследование хотябы IList нигде не говориться.

Дело в том, что внутри себя BindingSource работает только со списком (так как текущим элементом в CurrencyManager можно управлятьс по индексу — свойству Position) и если комбинация свойств DataSource+DataMember показывает не на объект, реализующий IList (именно этот интерфейс, не IList<T>) то BindingSource _копирует_ в себя данные из (DataSource+DataMember) и дальнейшее обновление возможно только сбросом\восстановлением свойств (DataSource+DataMember).

_>Кстати, а IList<User> подойдет? Или обязательно IList?

IList
... << RSDN@Home 1.2.0 alpha rev. 643>>
Now playing: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.