私はこの全体的なバインディングのことを初めて知りましたが、基本的に私のフォームの次のボタンを押すと、私はそれがより多くのコードを追加する前にそれがすべて動作することを確認したいので、以下は単なる一時的なものです。DB内の次の行に移動しようとすると重複するバインディングエラーが発生する
セクションをロードすると、フォームに最初の行がプリロードされるので、次を押すと行2に移動し、次に行3などに移動しますが、次に移動するときに移動します行2から行3に渡すと、エラーが発生します。これにより、コレクション内の2つのバインディングが同じプロパティにバインドされます。
コード:
Private Sub click()
sql = "Select * from tbl"
Using dbcon As New OleDbConnection(ACEConnStr)
Using cmd As New OleDbCommand(sql, dbcon)
dbcon.Open()
dtSample = New DataTable
dtSample.Load(cmd.ExecuteReader)
End Using
End Using
' initialize BS from DT
bsSample = New BindingSource(dtSample, Nothing)
TxtCI.DataBindings.Add("Text", bsSample, "CustomerID")
End Sub
次へ]ボタン:
Private Sub BtnNext_Click(sender As Object, e As EventArgs) Handles BtnNext.Click
click()
DataBindings.Clear()
bsSample.MoveNext()
BtnNext.Enabled = (bsSample.Count - 1 > bsSample.Position)
End Sub
BtnNext_Clickから 'nClick'を削除します。再クエリする必要はありません。 'DataBindings.Clear()'も削除してください。 nclickのコードは、フォームロードのように一度だけ実行したいものです。これは、1つのDTを作成し、それにBSを関連付けます。どちらも無限に再利用可能です。 – Plutonix
私はnclick()を削除して以来、私はnclick()関数を呼び出しているので、エラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。 –
どこのオブジェクト/行ですか? (関数ではなく、メソッドです)。そのコードは実行する必要がありますが、フォームロードのように一回だけ* – Plutonix