Forum: VB.NET |
Thema:
Änderungen vom DataGrid speichern |
Von:
G. Guest (
10.11.2005 09:54) |
Hallo, kann mir jemand helfen? Ich habe folgenden Code:
Private dsData As New DataSet
Friend WithEvents daData As SqlDataAdapter
Private strCmdString As String = "EXECUTE SP_MyTable" 'hier steht eine Select in einer Procedure
Private intCountData As Integer
Private Function FillGrid() As Long
'So fülle ich meine Tabelle
Dim ConnObj As New SqlConnection(PstrConnString)
ConnObj = New SqlConnection(PstrConnString)
dsData.Clear()
daData = New SqlDataAdapter(strCmdString, ConnObj)
Try
ConnObj.Open()
Catch ex As SqlException
ConnObj.Close()
ConnObj.Dispose()
MsgBox(ex.Message)
Exit Function
End Try
daData.Fill(dsData, "MyData")
intCountData = dsData.Tables("MyData").Rows.Count
Dim dvMaterial As New DataView(dsData.Tables("MyData"))
With dvMaterial
.AllowNew = False
.AllowDelete = False
End With
With Me.MyDataGrid
.DataSource = dvMaterial
.RowHeadersVisible = False
End With
ConnObj.Close()
ConnObj.Dispose()
Return intCountData
End Function
Private Sub MyDataGrid_CurrentCellChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyDataGrid.CurrentCellChanged
If dsData.HasChanges Then
'Dies geht nur wenn ich die Zeile wechsele nicht wenn ich die Spalte wechsele
Cursor.Current = Cursors.WaitCursor
Dim ConnObj As New SqlConnection(PstrConnString)
ConnObj = New SqlConnection(PstrConnString)
daData = New SqlDataAdapter(strCmdString, ConnObj)
Try
ConnObj.Open()
Catch ex As SqlException
Cursor.Current = Cursors.Default
ConnObj.Close()
ConnObj.Dispose()
MsgBox(ex.Message)
Exit Sub
End Try
Try
Dim cmdbldr As New SqlCommandBuilder(daData)
'Es wird trotz Fehler gespeichert
daData.ContinueUpdateOnError = True
daData.Update(dsData.Tables("MyData"))
Catch ex As SqlException
Cursor.Current = Cursors.Default
MsgBox(ex.Message)
End Try
'Fehler abfangen
If dsData.Tables("MyData").HasErrors = True Then
Cursor.Current = Cursors.Default
MsgBox("Es sind Fehler aufgetreten !", MsgBoxStyle.Critical, "Speichern")
End If
ConnObj.Close()
ConnObj.Dispose()
Cursor.Current = Cursors.Default
End If
End Sub
[/dotnet]
Wenn ich eine Änderung im Grid mache und die Zeile wechsele ist „dsData.HasChanges“ = True und die Änderungen werden gespeichert. Wenn ich aber eine Änderung im Grid mache und nur die Spalte wechsele ist „dsData.HasChanges“ = False, die Änderungen werden nicht gespeichert. Was mache ich falsch oder was muss ich noch für Code schreiben damit bei jeder Änderung auch direkt gespeichert wird ?
Bin für jede Hilfe dankbar....
Wenn ich eine Änderung im Grid mache und die Zeile wechsele ist „dsData.HasChanges“ = True und die Änderungen werden gespeichert. Wenn ich aber eine Änderung im Grid mach und nur die Spalte wechsele ist „dsData.HasChanges“ = False, die Änderungen werden nicht gespeichert. Was mache ich falsch oder was muss ich noch für Code schreiben damit bei jeder Änderung auch direkt gespeichert wird ?
Bin für jede Hilfe dankbar....
Die geht nur wenn ich die Zeile wechsele nicht wenn ich die Spalte wechsele
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!