2010-08-21 78 views
1

我有一個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。

+0

您可以發佈您用於爲每行創建組合框的代碼嗎?這是需要更改的代碼,因爲它需要被過濾。看到代碼將會有很大幫助! – InSane 2010-08-21 14:07:57

+0

沒什麼複雜的,只是創建一個DataGridViewComboBoxColumn並使用dataGridViewInstance.Columns.Add方法將其添加到我的DataGridView,並使用DataSource,ValueMember和DisplayMembers屬性將此列綁定到我的數據集表。 – 2010-08-21 14:30:05

回答

2

看起來像你需要將組合不直接綁定到數據源,而是綁定到對象。該對象是按產品ID分組的價格列表

+0

對不起,您可以請擴展一下嗎?或者用一個例子?謝謝。 – 2010-08-21 15:00:52

+0

我的意思是綁定組合到List對象。此列表創建爲ProductId = currentID的價格選擇。 – Arseny 2010-08-21 15:11:08

+0

我想我可以做到這一點,如果它是一個外部組合框,但這裏的組合框是在dataGridView中,是否有一個事件我可以作出反應,以提供基於當前行的ID的過濾列表? – 2010-08-21 15:17:18