85 messaggi dal 04 marzo 2012
Ciao,
hai ragione, non so perché all'inizio mi data errore senza quella riga, adesso l'ho tolta e funziona correttamente, sicuramente una mia svista.

Mi sorgono altri problemi però adesso:
a) quale evento devo usare quando seleziono un valore nella Dropdownlist ? Perchè al cambiare di quel valore devo recuperare il prezzo.

b) quando salvo i dati, leggo la mia gridview e per ogni record lo devo salvare, ma come faccio a salvare il valore selezionato dalla DropDownList? per gli altri campi utilizzo per esempio Me.dgvOggettiObbligatori.Rows(i).Cells(3).Text ma per la dropdowlist se fosse una textbox dovrei fare txtbox.selectedvalue ma in questo caso?

c) quando vado in modifica del record di destata devo ricaricare i dati che mi sono salvato in precedenza dei dettagli, pertanto io richiamo le sub scritte per l'inserimento carico la dropdownlist con i valori di default nel caso l'utente voglia cambiare l'oggetto selezionato in precedenza, ma come faccio a selezionare la voce che avevo salvato in precedenza?

Ti ringrazio anticipatamente.
Luigi
Modificato da fughy il 25 agosto 2017 16.54 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luigi,


a) quale evento devo usare quando seleziono un valore nella Dropdownlist ? Perchè al cambiare di quel valore devo recuperare il prezzo.

L'evento da gestire è SelectedIndexChanged. Imposta anche l'attributo AutoPostBack su true in modo che si scateni un postback nonappena l'utente cambia il valore (se è questo che desideri ottenere).


ma per la dropdowlist se fosse una textbox dovrei fare txtbox.selectedvalue ma in questo caso?

Se ho capito bene, devi ottenere un riferimento alla dropdownlist (il codice lo hai nell'esempio che ti ho fornito - riga 29 di default.aspx.vb) e poi dalla dropdownlist leggi il valore dalla sua proprietà SelectedValue.


come faccio a selezionare la voce che avevo salvato in precedenza?

Assegnando un valore alla proprietà SelectedValue della dropdownlist come mostrato nell'esempio (riga 35 di default.aspx.vb).

ciao,
Moreno

Enjoy learning and just keep making
85 messaggi dal 04 marzo 2012
Ciao Moreno,
il fatto è che quella DrowpDownList sembra che non venga riconosciuto come campo della pagina, mi spiego meglio se digito per es. Me.IDOggetto il sistema mi dovrebbe far vedere tutti i campi/oggetti della pagina che iniziano con quel nome, ma tra di essi questo non c'è.
Pertanto se io scrivo:

Protected Sub tIDOggetto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles IDOggetto.SelectedIndexChanged

End Sub

Visual Studio mi dice che la clausola Handles richiede una variabile WithEvents definita.

Non so se è la versione di VisualStudio 2010 che non va bene ma mi sembra strano.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luigi,


il fatto è che quella DrowpDownList sembra che non venga riconosciuto come campo della pagina

E' normale che sia così perché quella DropDownList è inserita in un template, cioè in uno "stampino" che verrà ripetuto tante volte per quante sono le righe della GridView.
Quindi non abbiamo a che fare con una singola DropDownList, ma con molteplici.

La soluzione consiste nel togliere l'Handles IDOggetto.SelectedIndexChanged ed indicare la funzione tIDOggetto_SelectedIndexChanged nella DropDownList stessa.

<asp:DropDownList ID="IDOggetto" OnSelectedIndexChanged="tIDOggetto_SelectedIndexChanged" AutoPostback="True" runat="server" />


ciao,
Moreno
Modificato da BrightSoul il 28 agosto 2017 13.13 -

Enjoy learning and just keep making
85 messaggi dal 04 marzo 2012
Perfetto così ci siamo evento identificato, avevo anche il problema di come sapere quale valore era stato scelto ma guardando qua e la ho utilizzato il seguente comando, spero sia corretto.
IDOggettoSelezionato = DirectCast(dgvOggettiObbligatori.Rows(0).Controls(3).Controls(1), DropDownList).SelectedItem.Value()

Un altro problema che mi sorge è come faccio a sapere qual è il record della gridview dove sono posizionato perché nell'esempio sopra ho indicato un record fisso dgvOggettiObbligatori.Rows(0) mentre dipende dalla riga che sto modificando.

Inoltre quando richiamo un record di testata devo riempire nuovamente la gridview con relativa dropdownlist, ma devo nella selectvalue della gridview devo assegnarli il valore che ho salvato come faccio ?


Ti ringrazio anticipatamente.

Ciao Luigi
Modificato da fughy il 28 agosto 2017 15.55 -
Modificato da fughy il 28 agosto 2017 17.40 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luigi,


IDOggettoSelezionato = DirectCast(dgvOggettiObbligatori.Rows(0).Controls(3).Controls(1), DropDownList).SelectedItem.Value()

E' molto più semplice di così: ogni volta che sottoscrivi un evento con una Sub, fai caso al parametro "sender" che ti viene passato. Lì dentro c'è il riferimento al controllo che ha sollevato l'evento. In questo caso è la DropDownList. Quindi prova con:
IDOggettoSelezionato = DirectCast(sender, DropDownList).SelectedValue



Inoltre quando richiamo un record di testata devo riempire nuovamente la gridview con relativa dropdownlist, ma devo nella selectvalue della gridview devo assegnarli il valore che ho salvato come faccio ?

Non sono sicuro di aver capito... forse dovresti provare ad usare la proprietà Parent che hanno tutti i controlli (compresa la dropdownlist). Ti permetterà di ottenere un riferimento al controllo contenitore e da lì puoi ottenere un riferimento agli altri controlli della riga usando il metodo FindControl.

Usa il debugger e metti un breakpoint nella riga in cui accedi alla proprietà Parent per capire che tipo di controllo referenza.

ciao,
Moreno

Enjoy learning and just keep making

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.