私はBindingSourceにバインドされたDataGridViewを持っています。私は、新しいレコードを追加するためのボタンがあります。AddNew()、この行を削除する問題
Private Sub btnNew_Click(sender As Object, e As EventArgs) Handles btnNew.Click
_bsStaff.AddNew()
End Sub
これはまた、「次の新しい/ブランク」の行とそれに続く、新しい行を作成して行います。これは試してみて、この新しく追加された行を削除するために、私はすぐに私の[削除]ボタンを押した場合を除いて、正常に動作します:
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
If MessageBox.Show("Delete staff member record?", "Confirm", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
_bsStaff.RemoveCurrent()
End If
End Sub
これは、新しい行が、また、それ以前に1を削除します!
RemoveCurrent、_bsStaff.EndEdit()
およびIf _bsStaff.Position + 1 = _bsStaff.Count Then
の前に行を追加しようとしましたが、動作は継続されます。
誰かがこの動作を説明して解決策を提示できますか?
追加:私は、私はそれが行の状態をチェックし、このコードを破ったと思った:
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
Dim state = CType(_bsStaff.Current, DataRowView).Row.RowState
Select Case state
Case DataRowState.Added
_bsStaff.RemoveCurrent()
Case DataRowState.Deleted
MessageBox.Show("Row already deleted.", "Delete")
Case DataRowState.Detached
_bsStaff.CancelEdit()
Case DataRowState.Modified
If MessageBox.Show("Delete staff member record?", "Confirm", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
_bsStaff.RemoveCurrent()
End If
Case DataRowState.Unchanged
If _bsStaff.Position + 1 > _bsStaff.Count Then
'do nothing, the new row
ElseIf MessageBox.Show("Delete staff member record?", "Confirm", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
_bsStaff.RemoveCurrent()
End If
Case Else
'do nothing
End Select
End Sub
しかし、スクリーンショットを見て、とき
私は新しい行をクリックし、私のボタンをクリックして、それはUnchanged状態ですが、それはcurを持つ前の行ですレンタルレコードポインタ(Unchanged状態がおそらく参照する)は、削除される行です。
基本的には、新しい行がちょうどクリックされたことを検出する方法が必要だと思いますが、何も入力されていないので、削除しようとすることはできません。
プロセス内でどこかでイベントコードが発生しないようにしてください。実際のデータリポジトリとは何ですか? – Plutonix
'DefaultValuesNeeded'は部門コンボボックスから項目を選択するために使用されます。データは、スタッフと部門の2つのテーブルを持つSQL Serverです。ああ、これに影響を与えるのはこのコードですが、私はまだこのコードを使って部署を選択する必要があります。このコードがなくても、新しい行をクリックして削除すると、前の行も削除されます。しかしこれはやや異なる問題でしょうか? –
新しい行をクリックすると、直ちに増分値-1、-2などが作成されます。 –