在WinForm中DataGridView可謂是應用比較多的數據顯示控件了,DataGridView中可以應用各種控件,關於這樣的文章網上
已有很多。都是實例化一個控件然后通過DataGridView.Controls.Add()方法綁定控件。然后通過特定的事伯執行數據綁定與操作。
這幾天在做項目的時候也也用到的DataGridView控件,而且需要要DataGridView使用ComboBox來動態的顯示數據。查了不少
的資料來完成DataGridView中的ComboBox的數據綁定,多數都是通過嚴設置在WinForm中的窗體InitializeComponent()中來設
置ComboBox對象的DataSource、DisplayMember、ValueMember的值來實現數據綁定,可是這樣並不能實現每行不同的數據進
行綁定。在查看MSDN的時候我發現一個對象是DataGridViewComboBoxCell 。MSDN上這樣說的:
DataGridViewComboBoxCell 類是用於顯示組合框控件(即組合了列表選擇字段的編輯字段)的 DataGridViewCell 的專用類型。
當前選定的 DataGridViewComboBoxCell 承載一個 DataGridViewComboBoxEditingControl,用戶可在其中更改單元格的值
(假設單元格的 ReadOnly 屬性設置為 false)。 與 ComboBox 控件不同,DataGridViewComboBoxCell 沒有 SelectedIndex
和 SelectedValue 屬性,而是通過從下拉列表中選擇值來設置單元格的 Value 屬性。
所以我這樣實現的:
在DataGridView進行數據綁定時通過for來循環添加行(通過DataSource來實現的時候下的的功能無法完成),同時
DataGridViewComboBoxColumn列中填充Null。 然后在DataGridView的RowsAdded事件中添加ComboBox的數據綁定代碼。

2

3

4

5

6

7

8

這樣就可以完成數據綁定了。我們就可以在DataGridVie一行的后面添加一個按鈕列,然后選擇DataGridView的CellClick事件中編寫代碼。
我們可以通過
MessageBox.Show("" + selectValue.ToString() + "");
注意的地方就是如果綁定的的是泛型集合,那么DisplayMember與ValueMember的值必須是屬性(property)
不可以是類的字段(Filed)。