2009-04-01 1 views
1

現在、フォームにエンティティをバインドしようとしていますが、表示メンバーとしてConfidenceDescriptionを持つコンボボックスにバインドされたDataConfidenceLevel(下記参照)が必要です。コンボボックスを作成する正しい方法は何ですか?エンティティフレームワーク - コンボボックスと正規化テーブルフィールドをバインドします

(私は現在、WPFを使用していますが、Winformsの答えが許容される)

おかげ

Entity Designer http://img19.imageshack.us/img19/374/entity.png

+0

あなたはまた、変更/この関係を編集できるようにしたい。..またはちょうどfirendly名を表示しますか? – RobS

+0

フレンドリーな名前を表示するだけです – Damien

答えて

2

私が予想していたよりも簡単でした。

comboBox.DataBindings.Add(new Binding("SelectedItem", this.dataBindingSource, "DataConfidenceLevel", true)); 
    comboBox.DataSource = db.DataConfidenceLevel; 
    comboBox.DisplayMember = "ConfidenceDescription"; 
    comboBox.ValueMember = "ConfidenceLevelID"; 
1

私はこのような状況を処理するための一つのアプローチ約2つのブログのエントリを書いた - それはASP.netに適用されますしかし、それはあなたを助けるかもしれません。

ここに記事がありますが、first oneは問題の紹介であり、second entryはそれをまとめてピン止めする方法を示しています。

「これは正しい方法」と認定されているかどうかはわかりませんが、これは確かにアプローチです:)これがあなたを助けてくれたら、私は聞いて喜んでいます!

編集:danbrucの答えを読んだ後は、ナビゲーションプロパティのToStringを上書きすることができます(読んだだけのため)が、それは部分的な答えです。

LINQクエリに「Include」ステートメントが含まれていない限り、これは機能しません。

.Include()を省略すると、何も列にバインドされないことを意味します。

+0

私はASP開発者ではありませんが、データバインドされたコントロールに関連するエンティティを表示する方法は複雑に思えます。 WinFormsと同じように、上書きされたToString()メソッドを使用して、データバインドされたエンティティを処理するASPに奇妙な疑念を抱きます。 –

+0

真実ですが、エンティティを変更/更新するために何をしなければならないのかよく分かりません – RobS

+0

ToStringアプローチを試してみて、どんな道路ブロックにも走っているかどうかを確認します(ナビゲーションメンバーロードされているかどうか)。 – RobS

2

コレクションをコントロールにバインドし、関連エンティティ、つまりDataConfidenceLevelタイプのナビゲーションプロパティDataConfidenceLevelを表示メンバーとして使用したいとしますか?

通常のToString()、

public partial class DataConfidenceLevel 
{ 
    public override String ToString() 
    { 
     return this.ConfidenceDescription; 
    } 
} 

とバインドするエンティティのDataConfidenceLevelプロパティにDisplayMemberを設定するよりをオーバーライドすることで本当に簡単に達成されます。

+0

私はこれを機能させるために私の髪を引き裂いている。とてもシンプルでなければならないものはとても難しいとは思えません。 DataConfidenceLevelクラスのToStringメソッドをオーバーライドしましたが、コンボボックスのデータソースと、どのような表示/値メンバーを使用するのですか? – Damien

関連する問題