DataGridView,数据绑定和组合框过滤
我有一个DataGridView中有一个ComboBox列,显示可能的价格,我想只显示与特定行有关的价格。DataGridView,数据绑定和组合框过滤
更详细地说,假设我有一个类方法,它返回一个包含2个表的数据集(由在SQL Server 2005数据库上运行的存储过程提供)。
第一个表包含订单明细行,第二个表包含每个产品有效的价格。
基本上,我的DataTables从数据集看起来像这样。
OrderDetails
ProductType | ProductID | Qty | SelectedPrice |
DairyProduct | Milk | 5 | 5.50 |
Fruit | Orange | 7 | 6.90 |
等等...
在从数据集中我的价格表,我把所有的价格适用于所有产品的订单日期。
Prices
ProductType | ProductID | Price |
DairyProduct | Milk | 5.50 |
DairyProduct | Milk | 6.90 |
DairyProduct | Milk | 7.90 |
Fruits | Orange | 6.90 |
Fruits | Orange | 4.50 |
等等...
我我OrderDetails表绑定到一个DataGridView,该用户将需要修改。
我想DataGridView的价格列显示数据集的第二个表中的价格。
我已经设法做到了这一点,我现在每行都有一个组合框,但组合框显示我价格表中的所有价格,我想要的是只显示价格有效的价格该特定产品。 例如,如果用户单击Milk行上的DataGridView,它应该只显示牛奶的价格,而不是所有的价格。
我不知道如何实现。 任何指针或示例?
非常感谢!
我正在开发VS 2008,C#和WinForms。
看起来像你需要将组合不直接绑定到数据源,而是绑定到对象。该对象是按产品ID分组的价格列表
对不起,您可以请扩展一下吗?或者用一个例子?谢谢。 – 2010-08-21 15:00:52
我的意思是绑定组合到List对象。此列表创建为ProductId = currentID的价格选择。 – Arseny 2010-08-21 15:11:08
我想我可以做到这一点,如果它是一个外部组合框,但这里的组合框是在dataGridView中,是否有一个事件我可以作出反应,以提供基于当前行的ID的过滤列表? – 2010-08-21 15:17:18
您可以发布您用于为每行创建组合框的代码吗?这是需要更改的代码,因为它需要被过滤。看到代码将会有很大帮助! – InSane 2010-08-21 14:07:57
没什么复杂的,只是创建一个DataGridViewComboBoxColumn并使用dataGridViewInstance.Columns.Add方法将其添加到我的DataGridView,并使用DataSource,ValueMember和DisplayMembers属性将此列绑定到我的数据集表。 – 2010-08-21 14:30:05