DataGridView, масштабные решения для привязки данных - PullRequest
1 голос
/ 08 декабря 2011

Я разработал приложение, которое использует DataGridView и может содержать более 500 тыс. Строк.В настоящее время он имеет такую ​​структуру:

DataGridView.DataSource is a BindingSource
BindingSource.DataSource = AggregateBindingListView
AggBLV.SourceLists = {Lists of Data}
AggBLV.Sort("PropertyName")
AggBLV.ApplyFilter(Predicate)
...

AggregateBindingListView - это коллекция, которая реализует: Component, IBindingListView, IList, IRaiseItemChangedEvents, ICancelAddNew, ITypedList

Это отличный кусок кода, разработанный http://blogs.warwick.ac.uk/andrewdavey

В любом случае.Мы используем его уже 4 года, и это становится узким местом в производительности.

Итак, вот мой вопрос:

У меня есть коллекция из 500 тыс. Предметов, и я хотел бы связать их сDataGridView.Мне нужно, чтобы у меня была сортировка по нескольким столбцам, фильтрация предикатов и приоритет производительности.

Мы только что обновились до C # 4.0.

Могу ли я добиться большего успеха, чем у меня?Я могу опубликовать статистику времени и тому подобное, но мне нужно что-то для сравнения.

1 Ответ

1 голос
/ 08 декабря 2011

Вы можете попытаться использовать виртуализацию данных, как показано здесь .Он предназначен для WPF, но, вероятно, может работать в WinForms с небольшими изменениями.Идея состоит в том, что вместо одновременного хранения всех данных в памяти вы загружаете необходимые «страницы» только по мере необходимости и выгружаете их, когда они больше не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...