リレーションを設定した項目の即時反映
- 題名: リレーションを設定した項目の即時反映
- 著者: まりもん
- 日時: 2012/06/12 17:34:06
- ID: 30564
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: リレーションを設定した項目の即時反映
- 著者: Hongliang
- 日時: 2012/06/12 22:23:57
- ID: 30567
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: リレーションを設定した項目の即時反映
- 著者: まりもん
- 日時: 2012/06/13 10:15:57
- ID: 30568
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: リレーションを設定した項目の即時反映
- 著者: まりもん
- 日時: 2012/06/13 12:42:37
- ID: 30570
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
下記のソースのように、リレーションを作成し、データバインディングを利用して
表示、編集を行おうとしております。
そこで、Textbox2の値をユーザが変更した時に、Textbox3の値を連動して変更したいのです。
bs.EndEdit()
をコールすると、表示が変わるのですが、EndEditを行うと、CancelEditでキャンセルできなくなるので行いたくありません。
現在考えている方法としては、EndEditをとりあえず発行して、編集をキャンセルする場合、Fillしなおして、DBから再度読み込みなおすということですが、件数が多い場合
読み込みに時間がかかるのではないかという懸念があるので、あまり行いたくありません。
何か、方法があるのでしょうか?
以下ソース
Dim sc As New SqlConnection '実際にはコネクションの設定を行っています。
Dim ta1 As SqlDataAdapter
Dim ta2 As SqlDataAdapter
Dim ds As New DataSet
Dim bs As New BindingSource
ta1 = New SqlDataAdapter("SELECT UserID,Code FROM Table1", sc)
ta1.Fill(ds, "Table1")
ta2 = New SqlDataAdapter("SELECT Code,Name FROM Table2", sc)
ta2.Fill(ds, "Table2")
ds.Relations.Add(New DataRelation("Code", ds.Tables("Table1").Columns("Code"), _
ds.Tables("Table2").Columns("Code"), False))
bs.DataSource = ds
bs.DataMember = "Table1"
BindingNavigator1.BindingSource = bs
TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", bs, "UserID", True))
TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", bs, "Code", True))
TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("Text", bs, "Code.Name", True))
TextBox3.ReadOnly = True