2011-05-13 109 views
1

我有一個DataGridView,我選擇DataGridView所在的選項卡時,將DataSource設置爲對象集合。DataGridView - ComboBox @ runtime

數據源設置完成後,我想將「縣」列更改爲DataGridViewComboBoxColumn,並將州的縣作爲項目。我見過的沒有任何作品 - 它總是給出一個例外。

有沒有辦法改變列類型而不刪除它?

當我單擊該行中的某個單元而不必修改列類型時,是否有辦法讓組合框或其他控件出現?我的失敗代碼=================== =====

//ii is a for loop variable on the dataGridViewFields.Columns.Count 

string colName = dataGridViewFields.Columns[ii].Name; 
if (colName.Equals("County")) 
{ 
    string dpName = dataGridViewFields.Columns[ii].DataPropertyName; 
    DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn(); 
    //get current column characteristics. 
    column.ValueType  = dataGridViewFields.Columns[ii].ValueType; ; 
    column.Name   = dataGridViewFields.Columns[ii].Name; 
    column.HeaderText = dataGridViewFields.Columns[ii].HeaderText; 
    column.Width   = dataGridViewFields.Columns[ii].Width; 
    //remove column from grid 
    dataGridViewFields.Columns.RemoveAt(ii); 
    //set column combobox characteristics 
    column.DropDownWidth = 160; 
    column.MaxDropDownItems = 10; 

    column.Items.AddRange(new string[] {"Dane", "Dodge", "Door"}); 
    column.FlatStyle = FlatStyle.Flat; 

    DataGridViewCell cell = new DataGridViewComboBoxCell(); 
    cell.Style.BackColor = Color.Wheat; 
    cell.ValueType = typeof(string); 
    cell.Value = "Door"; 
    column.CellTemplate = cell; 
    //add to the grid. 
    dataGridViewFields.Columns.Insert(ii, column); 
    dataGridViewFields.Columns[ii].DataPropertyName = dpName; 
    //dataGridViewFields.EditMode = DataGridViewEditMode.EditProgrammatically; 
} 
+0

爲什麼不能使用ComboBox列? – V4Vendetta 2011-05-13 11:41:54

回答

1

我想你會感興趣的組合框列

集的DisplayStyle的DisplayStyleNothing。這將使組合框僅顯示當您嘗試編輯單元格

+0

@ user751254爲您工作 – V4Vendetta 2011-06-17 05:22:23