Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# DataGridViewComboxColumn不使用自定义数据源呈现_C#_Combobox_Datagridcomboboxcolumn - Fatal编程技术网

C# DataGridViewComboxColumn不使用自定义数据源呈现

C# DataGridViewComboxColumn不使用自定义数据源呈现,c#,combobox,datagridcomboboxcolumn,C#,Combobox,Datagridcomboboxcolumn,使用此线程中的信息,我尝试设置并使用选项动态填充DataGridViewComboBoxColumn。我的调试器未显示任何错误,但组合框不会呈现 //setup combobox List<combo_automation_option> combo = new List<combo_automation_option>(); combo.Add(new combo_automation_option { id = "0", value = "None" }); comb

使用此线程中的信息,我尝试设置并使用选项动态填充DataGridViewComboBoxColumn。我的调试器未显示任何错误,但组合框不会呈现

//setup combobox
List<combo_automation_option> combo = new List<combo_automation_option>();
combo.Add(new combo_automation_option { id = "0", value = "None" });
combo.Add(new combo_automation_option { id = "*.0.5", value = "Once every 5 minutes" });

dgv_col_automation.HeaderText = "Automation";
dgv_col_automation.Name = "dgv_jobs_col_automation";
dgv_col_automation.FlatStyle = FlatStyle.Flat;
dgv_col_automation.DataSource = combo;
dgv_col_automation.ValueMember = "id";
dgv_col_automation.DataPropertyName = "value";

jobs_datagrid.Columns.Add(dgv_col_automation); 
我有一个公共结构,如下所示:

public struct combo_automation_option { 
   public string id;
   public string value;
}

有什么建议吗?

数据绑定在类/结构字段上不起作用,即使它们是公共的

您应该改用属性,例如:

public struct combo_automation_option { 
   public string id {get; set;}
   public string value {get; set;}
}
此外,如果要在组合框中显示其他内容(例如值)而不是id,请同时设置
DisplayMember
属性

顺便说一句,其他几点建议:

  • 只有在真正必要时才应使用结构;改用类
  • 您并没有遵循通常的c#命名约定:始终使用驼峰式大小写(无下划线),并且只有结构/类、方法和属性必须以大写字母开头

像您建议的那样更新结构修复了我的问题,但Visual Studio说DataGridViewComboxColum不包含DisplayProperty的定义(Haris Hasan必须删除了他的文章,我找不到它)。此外,我无法获取该列的每行值(当前为0)以填充“无”作为预选项。我是c#的新手。@atwellpub:当然,很抱歉我犯了一个错误:我写的是“DisplayProperty成员”而不是“DisplayMember属性”(因此正确的名称是DisplayMember)。现在已经解决了。@atwellpub:关于你的第二个问题。。。您已经向datagrid添加了一些行了吗?如果是这样,只需在集合上循环:
foreach(作业中的DataGridViewRow行\u datagrid.Rows)
并设置值do:
row.Cells[yourComboColumnIndex].value=“0”
public struct combo_automation_option { 
   public string id {get; set;}
   public string value {get; set;}
}