Neue Zeile in Datagridview löschen

06/03/2008 - 08:17 von Markus Renezeder | Report spam
Hallo Leute,

wahrscheinlich ist das nicht wirklich ein Problem, aber ich bin im Moment
völlig am Holzweg.

Ich hab eine DataGridView in das eine beliebige Anzahl von Zeilen eingefügt
wird, per Code.
Über einen Button kann der Benutzer einzelne Zeilen löschen.

Wenn ich die letzte Zeile löschen möchte (DataGridView.CurrentRow.IsNewRow =
True) bekomme ich die Fehlermeldung:

"Die neue Zeile, für die kein Commit durchgeführt wurde, kann nicht gelöscht
werden"

Könnt Ihr da weiterhelfen?

Danke schon mal,

Markus
 

Lesen sie die antworten

#1 Peter Fleischer
06/03/2008 - 09:44 | Warnen spam
"Markus Renezeder" schrieb im Newsbeitrag
news:

Ich hab eine DataGridView in das eine beliebige Anzahl von Zeilen
eingefügt wird, per Code.
Über einen Button kann der Benutzer einzelne Zeilen löschen.

Wenn ich die letzte Zeile löschen möchte (DataGridView.CurrentRow.IsNewRow
= True) bekomme ich die Fehlermeldung:

"Die neue Zeile, für die kein Commit durchgeführt wurde, kann nicht
gelöscht werden"



Hi Markus,
wenn das bei dir nicht funktioniert, wird wohl ein Fehler im Programm sein.
Ohne den Code zu kennen, kann man nur spekulieren. Hier mal eine Demo, wo
das problemlos funktioniert:

Option Infer On
Option Strict On

Imports System.Data.OleDb

Public Class Form1

Dim dgv As New DataGridView
Dim btn1 As New Button
Dim btn2 As New Button
Dim bs As New BindingSource

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'
bs = TestData.GetBindingSource
'
Me.Controls.Add(dgv)
With dgv
.Dock = DockStyle.Fill
.DataSource = bs
.AllowUserToAddRows = False
End With
'
Me.Controls.Add(btn2)
With btn2
.Dock = DockStyle.Top
.Text = "Delete Current Row"
AddHandler .Click, AddressOf btnDel
End With
'
Me.Controls.Add(btn1)
With btn1
.Dock = DockStyle.Top
.Text = "New Row"
AddHandler .Click, AddressOf btnNew
End With
'
End Sub

Private Sub btnNew(ByVal sender As Object, _
ByVal e As EventArgs)
With CType(bs.DataSource, DataTable)
Dim r As DataRow = .NewRow
r.Item("col1") = Now.ToLongTimeString
.Rows.Add(r)
End With
End Sub

Private Sub btnDel(ByVal sender As Object, _
ByVal e As EventArgs)
CType(bs.Current, DataRowView).Row.Delete()
End Sub

End Class

Public Class TestData
Private Shared dt As New DataTable
Shared Sub New()
With dt
.Columns.Add("ID", GetType(Integer))
With .Columns(0)
.AutoIncrement = True
.AutoIncrementSeed = -1
.AutoIncrementStep = -1
End With
.Columns.Add("col1", GetType(String))
End With
End Sub
Public Shared Function GetBindingSource() As BindingSource
Return New BindingSource(dt, "")
End Function

End Class

Viele Gruesse

Peter

Ähnliche fragen