使用DataGridView.DataSource C#后,将默认值设置为DataGridViewComboBoxColumn单元格

时间:2017-09-12 06:23:24

标签: c# winforms datagridview combobox

我正在尝试使用Combobox向DataGridView添加新列。 并将新单元格设置为默认值。 Combobox的列表更新很好,但我看不到默认值...

这是我的代码:

            BatteryInformationTests = DataBaseManager.GetCatalogPropsByCatalogNumber(catalogNumber);
            BatteryInformationTestsDataGridView.DataSource = BatteryInformationTests;

            DataGridViewComboBoxColumn cmbCol = new DataGridViewComboBoxColumn
            {
                Name = "PropName",
                DataPropertyName = "PropName"
            };

            cmbCol.Items.AddRange(new object[] { "1", "2", "3" });

            BatteryInformationTestsDataGridView.Columns.Add(cmbCol);

            foreach (DataGridViewRow row in BatteryInformationTestsDataGridView.Rows)
            {
                row.Cells["PropName"].Value = "2";
            }

BatteryInformationTests是

private DataTable BatteryInformationTests;

这是运行http://prntscr.com/gk3890后的目标。

当我选择任何Combobox时,我可以看到正确的值列表。 http://prntscr.com/gk3acn

我也发现当我删除这一行

BatteryInformationTestsDataGridView.DataSource = BatteryInformationTests;

它解决了问题但是DataGridView将是空的bacouse no DataSource ther ...

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

在手动添加之前移动BatteryInformationTestsDataGridView.DataSource = BatteryInformationTests;这一行可能会解决问题,但是你说它没有用。所以另一个解决方案是分配NullValue

DataGridViewComboBoxColumn cmbCol = new DataGridViewComboBoxColumn
{
     Name = "PropName",
     DataPropertyName = "PropName"
};
cmbCol.DefaultCellStyle.NullValue = "2";

希望有所帮助,