DataGridView中的Combobox的應用


 在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的數據綁定代碼。

 

復制代碼
1        private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
2          {
3            
4            DataGridViewComboBoxCell DgvCell = this.dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell;
5            DgvCell.DataSource = DataSource;
6            DgvCell.DisplayMember = "MeasureName";
7            DgvCell.ValueMember = "MeasureId";
8         }
復制代碼

這樣就可以完成數據綁定了。我們就可以在DataGridVie一行的后面添加一個按鈕列,然后選擇DataGridView的CellClick事件中編寫代碼。

我們可以通過

    

 

string selectValue =(string)(this.dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell).Value;//取得所選值的key即綁定ValueMember的值。
MessageBox.Show("" + selectValue.ToString() + "");

       注意的地方就是如果綁定的的是泛型集合,那么DisplayMember與ValueMember的值必須是屬性(property)

不可以是類的字段(Filed)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM