Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置DataGridView组合框的默认值_C#_Winforms_Datagridview_Combobox_Datagridviewcomboboxcell - Fatal编程技术网

C# 设置DataGridView组合框的默认值

C# 设置DataGridView组合框的默认值,c#,winforms,datagridview,combobox,datagridviewcomboboxcell,C#,Winforms,Datagridview,Combobox,Datagridviewcomboboxcell,我的应用程序由datagridviewcomboxcolumn内部DataGridView组成。ComboxColumn是从数据库表(键、值对)中填充的。我正在尝试使用DefaultValuesNeeded事件设置ComboBox列的默认值,但它不起作用 以下是示例代码: e.Row.Cells["Job"] as DataGridViewComboBoxColumn).Value ="12" 但它显示12作为值,而不是12,它假设显示12值的实际文本 例如: 要设置单元格的默认值,可以使用

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

以下是示例代码:

e.Row.Cells["Job"] as DataGridViewComboBoxColumn).Value ="12"
但它显示12作为值,而不是12,它假设显示12值的实际文本

例如:


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

  • 处理网格的
    DefaultValuesNeeded
    事件,并将值分配给
    e.Row.Cells[“作业”]。值
  • DataTable
    中,将“作业”
    DataColumn
    DefaultValue
    设置为所需值
在这两个选项中,指定的值类型应与列的数据类型相同


注意:您应该知道
e.Row.Cells[“作业”]
不是
DataGridViewComboBoxColumn
。如果列为组合框,则单元格为
DataGridViewComboxCell

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


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

@RezaAghaei尝试过,但它说“无法将字符串隐式转换为system.windows.form.datagridviewcell”,感谢您提供的信息,但是如何将字符串类型转换为的数据类型(例如,Row.Cells[“Job”])datagridviewcell?您不需要类型转换。将其指定给单元格的值,就像我在第一个选项的答案中所做的那样。此外,如果列的数据类型为
int
,则应为单元格的值指定一个
int
值。通过以下代码段尝试:e.Row.Cells[“Job”]=sJob。它说“不能隐式地将字符串转换为system.windows.form.datagridviewcell”作为错误。这里sJob是字符串。正如我所说的,您应该这样为单元格的
value
属性赋值:
e.Row.Cells[“Job”]。value=sJob我尝试了相同的方法,但它显示了问题中所示的输出。当我指定这个值时,它会自动选择在这种情况下不起作用的文本。2021年没有这样的条目:正如我刚才所说,它是defaultcellstyle。再读一遍,但要慢慢读。
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";
}