我有下一个枚举:
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)而不是字符串值。
我应该使用哪种DataSource?
如何在数据源中的DB和枚举之间进行组合?
答案 0 :(得分:0)
你应该写:
Enum.GetName(typeof(DoneStatus));
答案 1 :(得分:0)
这里有两个步骤
1)将枚举绑定到组合框数据源,这样它就可以有要选择的项目列表。
ComboColumn.DataSource = Enum.GetName(typeof(DoneStatus));
2)根据您从数据库查询中读取的内容设置所选项目。
ComboColumn.DataPropertyName = statusTblBindingSource["MyStatus"]; // See Note.
注意:我不记得从给定列的表中获取值的确切语法,但我认为它类似于我写的行。
答案 2 :(得分:0)
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";