11 messaggi dal 04 marzo 2008
Buonasera

ho una gridview dentro la quale, una volta entrato in modalità edit, ho creato un EditItemTemplate che contiene una DropDownList

Il mio fine è quello di aggiornare i dati in un Database Access , cambiando, frà gli altri, il valore della DDL, in modo programmatico, quindi con Code Behind.

Ho sperimentato questo metodo, a mio avviso poco elegante:

1) creo un HiddenField, fuori dalla GW, nel quale vado a memorizzare Id dell'oggetto che stò editando. Per far ciò, sfrutto l'evento GridViewEditEventArgs

 Protected Sub EditaBox(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GwBox.RowEditing
        
'trovo indice riga infase di editing
Dim IndiceRigaSelezionata As Integer = e.NewEditIndex.ToString
        
'trovo idoggetto selezionato
Dim IdOggetto As Integer = GwBox.DataKeys(IndiceRigaSelezionata).Value
        
'scrivo id in un hiddenFiled 
HFIdOggetto.Value = IdOggetto.ToString

PopolaGw()

End Sub


2) trovo il valore della DDL, che ha proprietà AutoPostBack="true"; sfrutto anche evento onselectedindexchanged della DDl, creando una funzione che ho chiamato "Agg" nella quale prendo IdOggetto, prendo valore selezionato da DDL, ed infine salvo il tutto nel DB

Protected Sub Agg(ByVal sender As Object, ByVal e As System.EventArgs)

'trovo il valore della DropDOwnList selezionato tramite oggetto sender
Dim IdTipoBox As String = CType(sender, DropDownList).Text
        
'recupero valore idoggetto dall'hddenfield
 Dim IdOggettoSelezionato As String = HFIdOggetto.Value
        
'aggiorno campo nel db
 Dim SqlUpdateTipoBox As String = "UPDATE BoxLatSx SET IdTipoBox = " & IdTipoBox & " WHERE IdBox = " & IdOggettoSelezionato
Dim cn As New OleDbConnection(CnStr)
cn.Open()
Dim cmd As New OleDbCommand(SqlUpdateTipoBox, cn)
cmd.ExecuteReader()
cmd.Dispose()
cn.Close()
cn.Dispose()
End Sub


Mi domando se esiste un metodo più "elegante" e meno "intrecciato" per recuperare valore DDL e IdOggetto Programmaticamente.

Altra cosa. La DDL si popola grazie ad una AccessDataSource, della quale imposto i parametri tramite Code Behind. Come faccio ad impostare la proprietà SelectedValue della DDL ? Con il modo canonico (ovvero con codice scritto direttamente sulla pagina aspx) il parser mi da errore, dicendo che non trova il campo del database.

Grazie in anticipo per la risposta.
marcoluparello wrote:
Mi domando se esiste un metodo più "elegante" e meno "intrecciato" per recuperare valore DDL e IdOggetto Programmaticamente.

sì, usare Bind:
http://www.aspitalia.com/script/791/Databind-Twoway-ASP.NET-2.0-Sharp-Bind-.aspx in questo caso, fa tutto da solo (il tuo DataSource control)
Altra cosa. La DDL si popola grazie ad una AccessDataSource, della quale imposto i parametri tramite Code Behind. Come faccio ad impostare la proprietà SelectedValue della DDL ? Con il modo canonico (ovvero con codice scritto direttamente sulla pagina aspx) il parser mi da errore, dicendo che non trova il campo del database.

vedi sopra

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.