2012-08-10 62 views
2

我有一個要求將下拉列表顯示到幾行中的一個特定行。 我的dataGridView有2列(參數和值),我在代碼中動態添加3行。對於所有3行,參數文本是固定的,不能由用戶修改。對於第一行,參數文本是「prm1」,值文本將從下拉列表中選擇。其他2行,值文本將被用戶輸入的文本框。我試着搜索,但找不到答案。請在這裏幫助我。將組合框添加到特定行的datagridview中

+2

我不認爲標題推斷是正確的方式去做這件事。您可以使第一列成爲['DataGridViewComboboxCell'](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridviewcomboboxcell.aspx),並將其設置爲只讀爲某些行,而不是試圖讓列的單元格類型與行有所不同。 – Bridge 2012-08-10 11:55:11

回答

2

請考慮組合框的柱,右鍵上下文菜單項添加到網格編輯列...在窗體設計電網。要添加列,將需要點擊添加按鈕編輯列對話框,然後選擇類型 = DataGridViewComboBoxColumn,如下圖所示:

enter image description here

請注意:您還需要使用該列的ItemsDataSource屬性填充組合框的下拉列表。

4

可以在運行時替換特定的DataGridView單元格 - 例如,在您希望在一個單元格中具有DataGridViewTextBoxColumn的組合框的位置並替換第一行中的單元格的情況下。事情是這樣的:

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    List<Book> books = new List<Book>(); 
    books.Add(new Book { bookID = 1, bookName = "Test-Driven Development (Kent Beck)" }); 
    books.Add(new Book { bookID = 2, bookName = "Refactoring (Martin Fowler)" }); 
    books.Add(new Book { bookID = 3, bookName = "Code Complete: 2nd Edition (Steve McConnell)" }); 
    DataGridViewComboBoxCell c = new DataGridViewComboBoxCell(); 

    c.DataSource = books; 
    c.Value = 1; 
    c.ValueMember = "bookID"; 
    c.DisplayMember = "bookName"; 

    dataGridView1.Rows[0].Cells[0] = c; 
} 

你也可以這樣做的其他方式,並從具有DataGridViewTextBoxCell一個DataGridViewComboBoxColumn更換特定的組合框的細胞。雖然


一兩件事 - 而這會工作,更好的可用性可能只是來自設置一些組合框爲只讀。

+0

看來我無法將列表綁定爲DataGridViewComboBoxCell的DataSource? – zionpi 2014-05-15 08:13:32