Обновление DataGridView Control DataSource C# Win Forms

У меня есть список объектов, и я хочу перепривязывать DataGridView каждую секунду. Я перепробовал много вещей, bindingsource, BindingList с интерфейсом INotifyPropertyChanged. Они прекрасно работают, когда у вас есть статическая коллекция в вашем коде, но мне нужно обновить источник данных из базы данных, поэтому, таким образом, я должен перебрать каждый объект и проверить, является ли он новым или удаленным, и обновить BindingList, но это решение. Я предпочитаю писать так каждую секунду:

BindingListObeject = new BindingList<MyObject>(ListOfMyObjects);

или же

BindingListObeject.Clear();
//in loop
BindingListObeject.Add(new_object);

DataGridView будет иметь прокрутку, а также выбранная ячейка должна быть выбрана после повторного связывания источника данных. А также сетка не должна мерцать.

Как я могу справиться с этим? Я использую EF, чтобы получить желаемый список объектов.

1 ответ

Попробуйте ObservableCollection() или любую другую коллекцию с событием CollectionChange

И никогда не делайте что-то вроде myCollection = ... ничего... что создает новый объект с новым дескриптором для myCollection, пока ваша сетка все еще привязана к старому дескриптору. Просто поменяйте коллекцию, не обновляйте ее.

Другие вопросы по тегам