Ho il seguente codice. Sto cercando di imparare ad usare HasChanges , ma continuo ad avere seri problemi di comprensione.
Se aggiungo una voce alla tabella,haschanges lo rileva e posso agire conseguentemente.
Se ,invece,modifico e/o cancello una voce, RowState mi restituisce sempre 1 (detached)
E' evidente che sbaglio, è evidente che ho carenze conoscitive, ma vorrei venire a capo della questione (perchè il dataset non si modifica?).
Grazie.
Public Class Form7
Dim cl As Class1 = New Class1
Dim tempDT As New DataTable("anagrafica")
Dim ds As New DataSet("dataset")
Dim drow As DataRow
Dim indice As Integer = 1
Dim nrec As Integer
Dim newrec As Boolean
Private Sub Form7_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cl.connessione()
Dim query As String = "Select id,cognome,nome,nato,comune,indirizzo,civico from anagrafica order by cognome,nome"
tempDT = cl.tabella(query, "anagrafica")
ds.Tables.Add(tempDT)
nrec = tempDT.Rows.Count
FirstItem_Click(Me, EventArgs.Empty)
End Sub
Private Sub SaveItem_Click(sender As Object, e As EventArgs) Handles SaveItem.Click
drow = tempDT.NewRow()
If newrec = True Then
newrec = False
drow(0) = My.Settings.ID
drow(1) = CognomeTextBox.Text
drow(2) = NomeTextBox.Text
drow(3) = NatoDateTimePicker.Text
drow(4) = ComuneTextBox.Text
drow(5) = IndirizzoTextBox.Text
drow(6) = CivicoTextBox.Text
tempDT.Rows.Add(drow)
Else
drow(0) = IdTextBox.Text
drow(1) = CognomeTextBox.Text
drow(2) = NomeTextBox.Text
drow(3) = NatoDateTimePicker.Text
drow(4) = ComuneTextBox.Text
drow(5) = IndirizzoTextBox.Text
drow(6) = CivicoTextBox.Text
End If
ListBox1.Items.Add(String.Format("rowstate= {0}", drow.RowState))
End Sub
Private Sub DeleteItem_Click(sender As Object, e As EventArgs) Handles DeleteItem.Click
' Create a new DataRow.
drow = tempDT.NewRow()
drow.Delete()
ListBox1.Items.Add("RowState=" & drow.RowState)
End Sub
Private Sub Form7_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
If ds.HasChanges Then
If MessageBox.Show(Me, "Confermi le modifiche apportate alla tabella?", "Avviso", MessageBoxButtons.YesNo) = DialogResult.Yes Then
tempDT.AcceptChanges()
Else
tempDT.RejectChanges()
End If
End If
End Sub