2 messaggi dal 24 marzo 2004
Ciao a tutti, ho il seguente problema: in una pagina aspx popolo una datagrid leggendo un dataset generato in automatico da VisualStudio partendo da un SqldataAdapter. Riesco a leggere i dati, a paginarli, a evocare il metodo EDIT della data grid per modificare i dati, ma quando dentro la sub DataGrid.updateCommand lancio il metodo myDataAdapter.update(mydataset) il dataset non viene aggiornato. Premetto che i command di update,insert e delete dell'adapter sono stati generati in automatico da Visual Studio ma anche sostituendo il UpdateCommand con un SQL senza parametri (es. update TABELLA set Campo1='pippo' where campo2=1) non succede nulla. Utilizzando il debug vedo che myDataAdapter.update(mydataset) restituisce 0 (numero di righe modificate).Esiste forse qualche propietà da settare nel DataAdapter o nella DataGrid?
Premetto di essere alle prime esperienze con ASP.NET.
grazie
435 messaggi dal 14 giugno 2002
prendi spunto da questo codice come esempio
poi il tuo lo cambi come vuoi:
Private Sub DataGrid2_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid2.UpdateCommand

Dim AnagrID As Integer
Dim CodiceTextBox As TextBox
Dim NomeTextBox As TextBox
Dim LivelloTextBox As TextBox
Dim SuperTextBox As TextBox
Dim strSQL As String
AnagrID = DataGrid2.DataKeys(CInt(e.Item.ItemIndex))
CodiceTextBox = e.Item.Cells(2).Controls(0)
NomeTextBox = e.Item.Cells(3).Controls(0)
LivelloTextBox = e.Item.Cells(4).Controls(0)
SuperTextBox = e.Item.Cells(5).Controls(0)

Dim Cmd As SqlCommand
strSQL = "Update ANAGR set Codice='" & CodiceTextBox.Text & "', Nominativo='" & NomeTextBox.Text.Replace("'", "''") & "', Livello='" & LivelloTextBox.Text & "', CodSup='" & SuperTextBox.Text & "' where ID_Anagr =" & AnagrID
Cmd = New SqlCommand(strSQL, Conn)
Conn.Open()
Try
Cmd.ExecuteNonQuery()
DataGrid2.EditItemIndex = -1
bene.Text = "<b>Record aggiornato</b><br>"
Catch Exc As Exception
bene.Text = "ERROR: Non puoi aggiornare questo record<br>"
bene.Style("color") = "red"
End Try
Conn.Close()
BindGrid()
End Sub
2 messaggi dal 24 marzo 2004
grazie, così funziona però devo utilizzare un altra connessione, io volevo utilizzare direttamente il command dentro il metodo update del SqlDataAdapter che dovrebbe gestire autonomamente la connessione. Ora mi sono accorto che dopo aver modificato il record sul DataGrid quando premo il bottone Edit probabilmente il DataSet associato non è aggiornato.
Ho provato anche a "forzare" da codice il UpdateCommand nel SqlDataAdapter con il seguente codice:

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand

Dim DaUpdateCmd As SqlCommand
Dim oggettoTEXT As TextBox = e.Item.Cells(3).Controls(0)
Dim annuncioTEXT As TextBox = e.Item.Cells(4).Controls(0)
Dim annuncio As String = annuncioTEXT.Text
Dim oggetto As String = oggettoTEXT.Text
Dim indice As String = e.Item.Cells(0).Text

'creo il comando per l'update
DaUpdateCmd = New SqlCommand("update myTable set oggetto=@oggetto,annuncio=@annuncio where indice=@indice", SqlConnection1)
'creo e valorizzo i parametri
DaUpdateCmd.Parameters.Add(New SqlParameter("@oggetto", SqlDbType.VarChar, 10))
DaUpdateCmd.Parameters("@oggetto").Value = oggetto

DaUpdateCmd.Parameters.Add(New SqlParameter("@annuncio", SqlDbType.VarChar, 100))
DaUpdateCmd.Parameters("@annuncio").Value = annuncio

DaUpdateCmd.Parameters.Add(New SqlParameter("@indice", SqlDbType.Int))
DaUpdateCmd.Parameters("@num_news").Value = indice

'FORZO IL comando nel Data Adapter

SqlDataAdapter1.UpdateCommand = DaUpdateCmd
DataSet1.AcceptChanges()

'Eseguo il metodo update

SqlDataAdapter1.Update(DataSet1)

'chiudo la riga nel datagrid

DataGrid1.EditItemIndex = -1

'riemetto a video la tabella

SqlDataAdapter1.Fill(DataSet1)
DataGrid1.DataBind()
End Sub

grazie
435 messaggi dal 14 giugno 2002
senti io usoSqlDataAdapter cosi
Dim Cmd As New SqlDataAdapter(strSQL, Conn)
per un query di selezione mentre
Cmd = New SqlCommand(strSQL, Conn)
per una qyery di update o insert

poi la connessione la faccio run time nel file global.asax cosi
Application("strConn") = "data source=10.0.0.253;initial catalog=EnpeSud;user id=raf;pwd=raf; persist security info=False;workstation id=RAFFAELE;packet size=4096"
e qui ne puoi dichiarare + di una connessione

poi nella pagina la richiamo in questo modo
Conn = New SqlConnection(Application("strConn"))

non se sono stato chiaro...
saluti

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.