私は見回して、私が必要とするものを見つけることができません。コンボボックスと親データのバインドをバインドし、2番目の親が変更されたときに更新する
私はDBを(他のamoung)3テーブルを持っています。
SchemeType
Scheme
Type
SchemeType
I 2つのコンボボックスを含む.NET 3.5 Winフォームを有するScheme
とType
両方の主キーへの外部キーを含みます。
一つは、私は他の希望Schemes
その選択Scheme
ためSchemeType
テーブルに存在する異なるTypes
を表示するように表示します。
私はDataSet
を持っています。このテーブルには、すべての3つのテーブルのすべてのエントリが含まれており、プライマリ - 外部キー関係のDataRelationsが設定されています。
BindingSourcesを使用してコンボボックスを作成していますが、Scheme
コンボボックスを変更したときに、Type
コンボボックスにコンテンツをリフレッシュする方法を見つけることができません。
私はまっすぐな親子関係でこれを行うことができますが、親子関係をコーディングする仕方はできません。その中に少なくとも1項目があるはずにもかかわらず、不必要なものは、
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
タイプのコンボボックスは、すべての項目が含まれていませんが取り除かで
はここで、私のコードです。 DataRelationを交換すると、このケースでは親(SchemeType)にTypeIDの一意のエントリがないため、DataSetにDataRelationを追加しません。
誰でも助けてくれますか?
ありがとうございます。私は手動でなければならないのではないかと心配していましたが、私が行方不明になっていた自動化された方法がないことを確認したかったのです。 SQLDataAdapter.Updateプロセスを使用できるように、各コンボの選択された値をバインドすることはできません。 –
私は、テストをせずにどのような影響が出るかを100%確信していません。フィルターと更新の両方にバインディングを使用できるかどうかはわかりません。 – jmcilhinney