2009-08-26 9 views
0

私は、DataSetを作成してデータを生成するメインクラスを持っています。このクラスのインスタンスは、参照によって私のアプリケーションのサブコントロールに渡されます。このデータセットを使用して、コンポーネント(この場合はリストボックス)にデータバインドする必要があります。これは、Windowsフォームアプリケーション用です。 (theresの違いかどうかわからない).Netリストボックスのデータバインディングの問題

channelTypesLB.DataBindings.Add("Text", synData.ds.Tables["ChannelTypes"], "channelType"); 

エラーなしTheresはと私は見ていない:、私もこれを試してみた

channelTypesLB.DataBindings.Add("Text", synData.ds, "ChannelTypes.channelType"); 

注:相続人は私がしようとしている

リストボックスのデータ... synData.ds.Tables["ChannelTypes"].Rows.Countを出力すると、実際にこのデータテーブルにデータがあることがわかります。

何か不足していますか?私はまた、channelTypesLB.Refresh();データバインディングを設定した後

これも役立つかもしれない...これは、データセットが作成された私のメインクラスのコードではなく、必ずその多分スコープの問題であれば、私は想像する私は、エラーを受け取ったであろう次のとおりです。

private DataSet _ds = new DataSet(); 
public DataSet ds { get { return _ds; } } 

答えて

3

リストボックスのDataSourceを設定することではなく、Textプロパティにバインドしてみてください。私は、任意の手段によって、データバインディングの専門家ではないんだけど、私は道をデータバインディングによって、あなたは現在、それをコントロールをやっていると信じている

channelTypesLB.DataSource = synData.ds; 
channelTypesLB.DisplayMember = "ChannelTypes.channelType"; 

1つのvalと結合するために使用されるPropertyManagerに結合しているオブジェクトの値を別の値に変更します。 DataSourceを設定すると、にバインドする必要があり、コレクションにバインドするために使用されます。

Here's a quick overview of WinForms databinding

+0

Hrmmはうまくいきました... DataMemberの代わりにDisplayMemberを使用しました... DataBindingを使うのは1ライナーが好きですが、 –

+0

はそれが誤植です。DataMemberはありません。 ListBox.DataSource = BindingSource – STW

+0

正しい方向に私を指摘してくれてありがとうございます。 –

1

何のASP.NETタグがないので、私はそれがしようとASP.NETで

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView; 
channelTypesLB.DisplayMember = "channelType"; 

念のために...ここにリサイズを想定しています:

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView; 
channelTypesLB.DataTextField = "channelType"; 
channelTypesLB.DataValueField = "channelTypeId"; // I'm assuming this field exists, replace with your id field 

channelTypesLB.DataBind(); 
+0

はい、winforms。データソースとDisplayMemberを持っているBindingSourceを構築することもできます。なぜデータバインディングがうまくいかないのか? –

関連する問題