Dus*_*usk 3 c# combobox datagridview winforms
我正在尝试允许用户DataGridViewComboBoxColumn为每个新行选择值.我必将ComboBox在GridView数据库,但每当我进入新行我看DataGridViewComboBoxColumn没有初始值.我必须先设置值.
DataGridViewComboBoxColumn每当我输入新行时,如何让默认值出现DataGridView?
这就是我绑定DataGridView ComboBox到数据库的方式:
bindingSource1.DataSource = itemBAL.GetTable();
dataGridView1.DataSource = bindingSource1;
ItemName.DataSource = bindingSource1; //Where ItemName is an instance ofDataGridViewComboBoxColumn
ItemName.DisplayMember = "Name";
ItemName.ValueMember = "ItemId";
Run Code Online (Sandbox Code Playgroud)
您可以使用组合框列的DefaultCellStyle.NullValue和DefaultCellStyle.DataSourceNullValue属性.
在灯架上有一个比较全面的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;
Run Code Online (Sandbox Code Playgroud)
上面的代码需要注意的一点是,我设置DataPropertyName允许绑定datagridview的数据源上的属性.
如果我没有这样做,那么当用户没有选择任何内容时,我需要在访问组合框列时添加一些额外的逻辑,因为属性的值将为null(NullValue不会将值设置为实际单元格,仅显示默认值).
| 归档时间: |
|
| 查看次数: |
15318 次 |
| 最近记录: |