Обновление 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, пока ваша сетка все еще привязана к старому дескриптору. Просто поменяйте коллекцию, не обновляйте ее.