【问题标题】:Set default value for DataGridView ComboBox为 DataGridView ComboBox 设置默认值
【发布时间】:2016-07-26 14:11:00
【问题描述】:

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

以下是示例代码:

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

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

例如:

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

【问题讨论】:

  • @RezaAghaei 试过,但它说“无法将字符串隐式转换为 system.windows.form.datagridviewcell”

标签: c# winforms datagridview combobox datagridviewcomboboxcell


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的信息,但是如何将字符串类型转换为 (e.Row.Cells["Job"]) datagridviewcell 的数据类型?
  • 您不需要类型转换。将其分配给单元格的值,就像我在第一个选项中所做的那样。此外,如果列的数据类型为int,则应为单元格的值分配int 值。
  • 通过以下代码尝试 e.Row.Cells["Job"] =sJob.它说“无法将字符串隐式转换为system.windows.form.datagridviewcell”作为错误。这里 sJob 是字符串。
  • 正如我所说,您应该这样为单元格的Value 属性赋值:e.Row.Cells["Job"].Value = sJob;
  • 我尝试了相同的方法,但它显示的输出如问题所示。当我分配值时,它应该自动选择在这种情况下不起作用的文本。
【解决方案2】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2015-11-14
  • 2016-08-05
  • 1970-01-01
  • 2018-12-26
  • 2013-11-05
相关资源
最近更新 更多