2

我有下一个枚举:

public enum DoneStatus
{
    empty=0,
    succeed,
    failed
};

以及包含 0 / 1 / 2的MyStatus列的表StatusTbl 。

如何在 DataGridViewComboBoxColumn 中显示此信息?

我试着写下一个:

ComboColumn.DataSource = Enum.GetValues(typeof(DoneStatus));
ComboColumn.DataPropertyName = "DoneStatus";
ComboColumn.Name = "DoneStatus";

但是我只能看到组合中的所有选项,根据表中的值我看不到正确的选择值。

我还尝试将组合连接到绑定源:

ComboColumn.DataSource = statusTblBindingSource;
ComboColumn.DataPropertyName = "MyStatus";

但后来我只看到了 int 值(0/1/2)而不是字符串值。

我应该使用哪个数据源?

如何在数据库和数据源中的枚举之间进行组合?

4

3 回答 3

0

You should write :

Enum.GetName(typeof(DoneStatus));
于 2013-04-29T09:34:50.100 回答
0

这里有两个步骤

1)将枚举绑定到组合框数据源,因此它可以有要选择的项目列表。

ComboColumn.DataSource = Enum.GetName(typeof(DoneStatus));

2)根据您从数据库查询中读取的内容设置所选项目。

ComboColumn.DataPropertyName = statusTblBindingSource["MyStatus"]; // See Note.

注意:我不记得从表中为给定列获取值的确切语法,但我认为它与我写的行相似。

于 2013-04-29T09:42:55.593 回答
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";
于 2013-04-29T09:43:03.743 回答