gpt4 book ai didi

c# - 绑定(bind)到字典的 DataGridView

转载 作者:IT王子 更新时间:2023-10-29 04:10:05 27 4
gpt4 key购买 nike

我有一个包含项目和价格的字典。这些项目是唯一的,但会在应用程序的整个生命周期内缓慢添加和更新(也就是说,我事先不知道项目字符串)。我想将此结构绑定(bind)到 DataGridView,这样我就可以在我的表单上显示更新,例如:

Dictionary<string, double> _priceData = new Dictionary<string, double>();
BindingSource _bindingSource = new BindingSource();
dataGridView1.DataSource = _bindingSource;
_bindingSource.DataSource = _priceData;

但不能,因为 Dictionary 没有实现 IList(或 IListSourceIBindingList IBindingListView).

有办法实现吗?我需要保留一个唯一的项目列表,但也更新现有项目的价格,所以 Dictionary 是我认为的理想数据结构,但我找不到一种方法来显示我的数据表格。


更新:

Marc 在下面的建议非常有效,但我仍然不确定如何在执行期间更新 DataGridView。

我有一个类级变量:

private DictionaryBindingList<string, decimal> bList; 

然后在 Main() 中实例化它:

bList = new DictionaryBindingList<string,decimal>(prices); 
dgv.DataSource = bList;

然后在程序执行期间,如果一个新条目被添加到字典中:

prices.Add("foobar", 234.56M); bList.ResetBindings(); 

我认为这会刷新 DataGridView。为什么不呢?

最佳答案

或者,在 LINQ 中,它又好又快:

var _priceDataArray = from row in _priceData select new { Item = row.Key, Price = row.Value };

那应该可以绑定(bind)到“项目”和“价格”列。

要将它用作 GridView 中的数据源,您只需在它后面加上 ToArray()

dataGridView1.DataSource = _priceDataArray.ToArray();

关于c# - 绑定(bind)到字典的 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/854953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com