私は周りを見回しましたが、必要なものがまったく見つかりません。
私は(とりわけ)3つのテーブルを持つDBを持っています。
SchemeType
Scheme
Type
SchemeType
Scheme
との両方の主キーへの外部キーを含むType
2 つのコンボボックスを含む .NET 3.5 WinForm があります。
1 つはSchemes
I would like を表示し、もう1 つは選択したテーブルにTypes
存在する個別のものを表示します。SchemeType
Scheme
DataSet
3 つのテーブルすべてのすべてのエントリを含む があり、Primary-Foreign キー関係の DataRelations を設定しました。
Type
BindingSources を使用してコンボボックスにデータを入力していますが、コンボボックスを変更したときにコンボボックスの内容を更新する方法がわかりませんScheme
。
私はこれをまっすぐな親子関係で行うことができますが、親子関係をコーディングする方法がわかりません。
これが私のコードで、不要なものが取り除かれています
Dim DS As New DataSet("myDS")
Dim SchemeBndSrc As New BindingSource
Dim TypeBndSrc As New BindingSource
Using cmd As New SqlCommand("myStroedProc", _conn)
cmd.CommandType = CommandType.StoredProcedure
Using adp As New SqlDataAdapter(cmd)
adp.Fill(DS)
End Using
End Using
' Name the tables
DS.Tables(0).TableName = "Scheme"
DS.Tables(1).TableName = "Type"
DS.Tables(2).TableName = "SchemeType"
Dim rel As New DataRelation("Scheme-SchemeType", _
DS.Tables("Scheme").Columns("SchemeID"), _
DS.Tables("SchemeType").Columns("SchemeID"), _
True)
Dim rel2 As New DataRelation("Type-SchemeType", _
DS.Tables("Type").Columns("TypeID"), _
DS.Tables("SchemeType").Columns("TypeID"), _
True)
DS.Relations.Add(rel)
DS.Relations.Add(rel2)
' Scheme
' Set up the binding source
SchemeBndSrc.DataSource = DS
SchemeBndSrc.DataMember = "Scheme"
' Bind the bindingsource to the combobox
cboScheme.ValueMember = "SchemeId"
cboScheme.DisplayMember = "SchemeName"
cboScheme.DataSource = SchemeBndSrc
cboScheme.SelectedIndex = -1
' Type
' Set up the binding source
TypeBndSrc.DataSource = SchemeBndSrc
TypeBndSrc.DataMember = "Type-SchemeType"
' Bind the bindingsource to the combobox
cboType.ValueMember = "TypeID"
cboType.DisplayMember = "TypeDesc"
cboType.DataSource = TypeBndSrc
cboType.SelectedIndex = -1
Type コンボボックスには、少なくとも 1 つのアイテムが含まれている必要がありますが、アイテムが含まれていません。DataRelation を入れ替えても、この場合の親 (SchemeType) には TypeID の一意のエントリがないため、DataSet に追加されません。
誰でも私を助けてもらえますか?