为 DataGridView ComboBox 设置默认值

Set default value for DataGridView ComboBox

我的应用程序由 DataGridviewComboBoxColumnDataGridView 组成。 ComboBoxColumn 正在从数据库 table(键值对)中填充。我正在尝试使用 DefaultValuesNeeded 事件为 ComboBox 列设置默认值,但它不起作用。

示例代码如下:

e.Row.Cells["Job"] as DataGridViewComboBoxColumn).Value ="12"

但它显示 12 作为值,而不是 12 它应该显示 12 值的实际文本。

例如:

DataGridViewComboBoxColumn dgvCbJob = new DataGridViewComboBoxColumn();
{
    dgvCbJob.HeaderText = "Job";
    hadd.Clear();
    hadd.Add("@Search", string.Empty);
    ds = ObjDAL.GetDataSetForPrc("prc_GetJobList", hadd);
    if (ds.Tables[0].Rows.Count > 0)
    {
        dgvCbJob.DataSource = ds.Tables[0];
        dgvCbJob.DisplayMember = "JobName";
        dgvCbJob.ValueMember = "JobMasterId";
    }
    dgvCbJob.DisplayIndex = 0;
    dgvCbJob.Width = 100;
    dgvCbJob.Name = "Job";
}

要为单元格设置默认值,您可以使用以下任一选项:

  • 处理网格的 DefaultValuesNeeded 事件并将值赋给 e.Row.Cells["Job"].Value
  • 在您的 DataTable 中,将 'Job' DataColumnDefaultValue 设置为所需的值

在这两个选项中,您分配的值类型应与列的 DataType 类型相同。

注:你应该知道e.Row.Cells["Job"]不是DataGridViewComboBoxColumn。如果列是组合框,则单元格是 DataGridViewComboBoxCell.

在许多情况下,这可以在设计模式下完成,右键单击 dgv,select 组合框列,默认单元格样式,数据“nullValue”

非常适合简单的情况,例如用户的简单选择 A B C,默认为 A,如果您稍后比较单元格的值为 A 或 B 或 C,它将起作用。但是,如果您与 selected 索引进行比较,这将是一个问题,因为我认为它算作集合中的一个值