Combo box is not displaying default value in DataGridView in C#

前端 未结 3 1364
时光说笑
时光说笑 2021-01-20 18:21

I\'m trying to allow user to select value from DataGridViewComboBoxColumn for each new row. I\'ve bound ComboBox in GridView to databa

3条回答
  •  不思量自难忘°
    2021-01-20 18:50

    You can use the DefaultCellStyle.NullValue and DefaultCellStyle.DataSourceNullValue properties of the combo box column.

    There is a quite comprehensive MSDN article on this here.

    I've also given a code example below:

    // Let's say I have this list of cars I want to add to my datagridview
    List cars = new List();
    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;
    

    One thing to note with the code above is that I am setting the DataPropertyName to allow binding with a property on the datagridview's datasource.

    If I was not doing that then I would need to add some additional logic when accessing the combo box column when users have selected nothing, since the Value of the property would be null (the NullValue does not set a value to the actual cell, only shows a default value).

提交回复
热议问题