У меня есть Dictionary
, который содержит предметы и цены. Элементы уникальны, но постепенно добавляются и обновляются в течение всего жизненного цикла приложения (то есть я не знаю заранее строки элементов). Я хотел бы связать эту структуру с DataGridView, чтобы я мог показывать обновления в моей форме, что-то вроде:
Dictionary<string, double> _priceData = new Dictionary<string, double>();
BindingSource _bindingSource = new BindingSource();
dataGridView1.DataSource = _bindingSource;
_bindingSource.DataSource = _priceData;
Но не может, поскольку Dictionary
не реализует IList
(или IListSource
, IBindingList
или IBindingListView
).
Есть ли способ достичь этого? Мне нужно вести уникальный список товаров, но также обновлять цену для существующего товара, поэтому я считаю, что Dictionary
- это идеальная структура данных, но я не могу найти способ отобразить данные в моей форме.
Обновление:
Предложение Марка, приведенное ниже, работает очень хорошо, но я все еще не уверен, как обновить DataGridView во время выполнения.
У меня есть переменная уровня класса:
private DictionaryBindingList<string, decimal> bList;
Затем создайте экземпляр этого в Main()
:
bList = new DictionaryBindingList<string,decimal>(prices);
dgv.DataSource = bList;
Затем во время выполнения программы, если в словарь добавляется новая запись:
prices.Add("foobar", 234.56M); bList.ResetBindings();
Я думал, что это обновит DataGridView. Почему нет?