2011-07-21 54 views
2

我試圖讓用戶從每個新行的DataGridViewComboBoxColumn中選擇值。我已將ComboBoxGridView綁定到數據庫,但每當我輸入新行時,我都會看到DataGridViewComboBoxColumn沒有初始值。我必須先設定值。組合框在DataGridView中不顯示默認值C#

每當我在DataGridView中輸入新行時,如何讓默認值出現在DataGridViewComboBoxColumn

這是我如何結合DataGridViewComboBox數據庫:

bindingSource1.DataSource = itemBAL.GetTable(); 
dataGridView1.DataSource = bindingSource1; 
ItemName.DataSource = bindingSource1; //Where ItemName is an instance ofDataGridViewComboBoxColumn 
ItemName.DisplayMember = "Name"; 
ItemName.ValueMember = "ItemId"; 

回答

0

可以在設計或代碼項目添加到您的DataGridViewComboBoxColumn

6

您可以使用組合框列的DefaultCellStyle.NullValueDefaultCellStyle.DataSourceNullValue屬性。

關於此here有一篇非常全面的MSDN文章。

我也給下面一個代碼示例:

// Let's say I have this list of cars I want to add to my datagridview 
List<Car> cars = new List<Car>(); 
cars.Add(new Car() { Index = 0, Make = "Ford" }); 
cars.Add(new Car() { Index = 1, Make = "Chevvy" }); 
cars.Add(new Car() { Index = 2, Make = "Toyota" }); 

// I create the column, setting all the various properties 
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); 
col.DataSource = cars; 
col.Name = "Cars"; 
col.DisplayMember = "Make"; 
col.HeaderText = "Car"; 
col.ValueMember = "Index"; 
col.DataPropertyName = "Car"; 

// As well as standard properties for a combobox column I set these two: 
col.DefaultCellStyle.NullValue = cars[0].Make; 
col.DefaultCellStyle.DataSourceNullValue = cars[0].Index; 

dataGridView1.Columns.Add(col); 

dataGridView1.DataSource = dt; 

一件事上面的代碼需要注意的是,我設置DataPropertyName允許與在DataGridView的DataSource屬性綁定。

如果我沒有這樣做,那麼當用戶沒有選擇任何東西時,我需要在訪問組合框列時添加一些額外的邏輯,因爲該屬性的值將爲空(NullValue不會將值設置爲實際單元格,僅顯示默認值)。

2
bindingSource1.DataSource = itemBAL.GetTable(); 
dataGridView1.DataSource = bindingSource1; 
ItemName.DataSource = bindingSource1; //Where ItemName is an instance ofDataGridViewComboBoxColumn 
ItemName.DisplayMember = "Name"; 
ItemName.ValueMember = "ItemId"; 

添加此行只

dataGridView1["ItemName",dataGridRowNumber].value=1;//item id value