2009-07-30 8 views
1

私は人とシャツのデータベースを持っています。各人には、彼が着たいと思う特定のシャツがあります。 これに対して、私は3つのテーブルを持っています。人物、シャツ、PersonShirt。 PersonShirtは、PersonIdとShirtIdを持つ行のリストで構成されています。 UIではCheckedComboBoxを使用しています。これはチェック項目のコンボボックスです。特定の人の場合、コンボボックスにはすべてのシャツが表示され、アイテムは自分が好きなものに応じてチェックされるかチェックされません。アイテムがチェックされている場合、新しいPersonShirtがデータベースに追加されます。バインドされたDataSourceに基づいてプロパティ値を決定するコントロールを作成するにはどうすればよいですか?

これは、当社のプロジェクトの1つに数回出現するシナリオの単なる例です。だから、 "PersonShirt"のLinksDataSourceと "ShirtId"のLinksValueMemberを取り込むカスタムCheckedComboBoxを作成しました。

LinksDataSource内の特定のアイテムからLinksValueMember文字列に基づいてプロパティを取得するにはどうすればよいですか? LinksDataSourceはBindingSourceです。

+0

これは宿題のようです。 –

答えて

2

これを行う正しい方法は、ITypedListインターフェイスを使用することです。バインドされたリストがITypedListを実装している場合は、ITypedList.GetItemProperties(null)を呼び出してプロパティを取得し、値を取得するプロパティを探します。次に、結果のPropertyDescriptorを使用して値を取得します。

ITypedList typedList = this.dataSource as ITypedList; 
PropertyDescriptor valueDescriptor = typedList.GetItemProperties(null)).FirstOrDefault(d => d.Name == this.linksValueMember); 
object value = valueDescriptor.GetValue(listObject); 
関連する問題