将ComboBox绑定到2数据源:表&枚举
本文关键字:枚举 数据源 ComboBox 绑定 | 更新日期: 2023-09-27 18:11:23
我有下一个Enum:
public enum DoneStatus
{
empty=0,
succeed,
failed
};
和表StatusTbl,列MyStatus包含0/1/2。
如何在DataGridViewComboBoxColumn中显示此信息?
我试着写下一个:
ComboColumn.DataSource = Enum.GetValues(typeof(DoneStatus));
ComboColumn.DataPropertyName = "DoneStatus";
ComboColumn.Name = "DoneStatus";
但是我只能看到组合中的所有选项,我不能根据表中的值看到正确选择的值
我还尝试连接组合绑定源:
ComboColumn.DataSource = statusTblBindingSource;
ComboColumn.DataPropertyName = "MyStatus";
但是我只看到了int值(0/1/2)而不是字符串值。
我应该使用哪个数据源?
如何在数据源中组合DB和枚举?
ComboColumn.DataSource = Enum.GetValues(typeof(DoneStatus))
.Cast<DoneStatus>()
.Select(p => new { Key = (int)p, Value = p.ToString() })
.ToList();
// you can change the display member and value member
// based on which value you have stored in database
ComboColumn.DisplayMember = "Key";
ComboColumn.ValueMember = "Value";
ComboColumn.DataPropertyName = "MyStatus";
你应该写:
Enum.GetName(typeof(DoneStatus));
这里有两个步骤
1)将枚举绑定到组合框数据源,这样它就可以有可供选择的项目列表。
ComboColumn.DataSource = Enum.GetName(typeof(DoneStatus));
2)设置从DB查询中读取的项。
ComboColumn.DataPropertyName = statusTblBindingSource["MyStatus"]; // See Note.
注意:我不记得从表中获取给定列的值的确切语法,但我认为它类似于我写的那行。