设置DataGridView ComboBox的默认值

时间:2016-07-26 14:11:01

标签: c# winforms datagridview combobox datagridviewcomboboxcell

我的申请由DataGridviewComboBoxColumn DataGridView组成。 ComboBoxColumn正从数据库表(键,值对)中填充。我正在尝试使用ComboBox事件设置DefaultValuesNeeded列的默认值,但它无效。

以下是示例代码:

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

但它显示12为值,而不是12,它假设显示12值的实际文本。

例如:

enter image description here

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";
}

2 个答案:

答案 0 :(得分:1)

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

  • 处理DefaultValuesNeeded网格事件并将值分配给e.Row.Cells["Job"].Value
  • DataTable设置DefaultValue作为'作业' DataColumn到期望值

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

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

答案 1 :(得分:0)

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

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