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) のみが表示され、文字列値は表示されませんでした。

どの DataSource を使用すればよいですか?

DB とデータ ソースの列挙型をどのように組み合わせることができますか?

4

3 に答える 3

0

あなたは書くべきです:

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

ここには2つのステップがあります

1) 列挙型をコンボ ボックスのデータ ソースにバインドして、選択する項目のリストを持つことができるようにします。

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

2)DBクエリから読み取ったものから選択したアイテムを設定します。

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 に答える