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