9 messaggi dal 30 settembre 2004
salve
sto lavorando ad una gridview che modifica, cancella e inserisce nuovi record in un db Sql server 2008. Tutto funziona ma accade una cosa strana nell'inserimento di nuovi record. Inserito un nuovo record i campi di inserimento si svuotano, ma se ricarico la pagina mi carica un nuovo record uguale al precedente e vanno nel db. Non c'è modo di azzerare quei dati che evidentemente rimangono da qualche parte?
Posto il codice:

Imports System.Drawing
Imports System.Data.SqlClient
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Private con As New SqlConnection("Data Source=.\SQLEXPRESS;database=Livelli;uid=sa;Password=******")
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
loadLivelli()
End If
End Sub
Protected Sub loadLivelli()
con.Open()
Dim cmd As New SqlCommand("Select * from Livelli", con)
Dim da As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
da.Fill(ds)
Dim count As Integer = ds.Tables(0).Rows.Count
con.Close()
If ds.Tables(0).Rows.Count > 0 Then
gridView.DataSource = ds
gridView.DataBind()
Else
ds.Tables(0).Rows.Add(ds.Tables(0).NewRow())
gridView.DataSource = ds
gridView.DataBind()
Dim columncount As Integer = gridView.Rows(0).Cells.Count

End If
End Sub
Protected Sub gridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
gridView.EditIndex = e.NewEditIndex
loadLivelli()
End Sub
Protected Sub gridView_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Dim Id As String = gridView.DataKeys(e.RowIndex).Values("id").ToString()
Dim Dal As TextBox = DirectCast(gridView.Rows(e.RowIndex).FindControl("txtDal"), TextBox)
Dim Qualifica As TextBox = DirectCast(gridView.Rows(e.RowIndex).FindControl("txtQualifica"), TextBox)
Dim Livello As TextBox = DirectCast(gridView.Rows(e.RowIndex).FindControl("txtLivello"), TextBox)
Dim Al As TextBox = DirectCast(gridView.Rows(e.RowIndex).FindControl("txtAl"), TextBox)

con.Open()
Dim cmd As New SqlCommand(Convert.ToString("update Livelli set Dal='" + Dal.Text + "', Qualifica='" + Qualifica.Text + "', Livello='" + Livello.Text + "', Al='" + Al.Text + "' where id=") & Id, con)
cmd.ExecuteNonQuery()
con.Close()

gridView.EditIndex = -1
loadLivelli()
End Sub
Protected Sub gridView_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
gridView.EditIndex = -1
loadLivelli()
End Sub
Protected Sub gridView_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs)
Dim Id As String = gridView.DataKeys(e.RowIndex).Values("id").ToString()
con.Open()
Dim cmd As New SqlCommand("delete from Livelli where id=" + Id, con)
Dim result As Integer = cmd.ExecuteNonQuery()
con.Close()
If result = 1 Then
loadLivelli()

End If
End Sub
Protected Sub gridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim Id As String = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "id"))
Dim lnkbtnresult As Button = DirectCast(e.Row.FindControl("ButtonDelete"), Button)
If lnkbtnresult IsNot Nothing Then
lnkbtnresult.Attributes.Add("onclick", (Convert.ToString("javascript:return deleteConfirm('") & ID) + "')")
End If
End If
End Sub
Protected Sub gridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)
If e.CommandName.Equals("AddNew") Then
Dim inID As TextBox = DirectCast(gridView.FooterRow.FindControl("inID"), TextBox)
Dim inDal As TextBox = DirectCast(gridView.FooterRow.FindControl("inDal"), TextBox)
Dim inQualifica As TextBox = DirectCast(gridView.FooterRow.FindControl("inQualifica"), TextBox)
Dim inLivello As TextBox = DirectCast(gridView.FooterRow.FindControl("inLivello"), TextBox)
Dim inAl As TextBox = DirectCast(gridView.FooterRow.FindControl("inAl"), TextBox)


con.Open()
Dim cmd As New SqlCommand("insert into Livelli(Dal,Qualifica,Livello,Al) values('" + inDal.Text + "','" + inQualifica.Text + "','" + inLivello.Text + "','" + inAl.Text + "')", con)
Dim result As Integer = cmd.ExecuteNonQuery()
con.Close()
If result = 1 Then
loadLivelli()

End If

End If
End Sub
End Class


grazie mille
Modificato da Luckymain il 29 maggio 2015 19.47 -
Dopo la insert puoi svuotare le proprietà Text dei vari campi che ti interessano.
PS - nella query usa i parameters

Ormai programmano tutti... ma la professionalità appartiene a pochi
9 messaggi dal 30 settembre 2004
ciao
Purtroppo anche questa istruzione non risolve il problema:

inDal.Text = ""
inQualifica.Text = ""
inLivello.Text = ""
inAl.Text = ""

Il fatto è che quando inserisco un nuovo record le textbox si svuotano, ma se faccio il refresh della pagina mi inserisce di nuovo il record precedente (con un ID diverso naturalmente)

Usare i Parameters non mi risolve il problema, li sto usando in un'altra applicazione e ho lo stesso problema. Particolare interessante è che se dopo aver inserito un record eseguo una qualsiasi operazione di Edit o Delete di qualsiasi record se ricarico la pagina quel problema non si presenta più.

Ma c'è una cache o qualcosa del genere che conserva i valori inseriti (anche se spariscono dalla vista) che si possa eliminare? Dove rimangono nascosti sti valori?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.