Ho un listbox a selezione multipla.
Da client aggiungo uno o più item e li seleziono
Possibile che nel server per trovare gli elementi selezionati debba ricorrere alle care, vecchie request.Form?
Non è possibile altrimenti?![]()
![]()
Ho un listbox a selezione multipla.
Da client aggiungo uno o più item e li seleziono
Possibile che nel server per trovare gli elementi selezionati debba ricorrere alle care, vecchie request.Form?
Non è possibile altrimenti?![]()
![]()
Pietro
Potresti definire l'attributo runat=server per la ListBox e utilizzare le proprietà della classe System.Web.UI.HtmlControls.HtmlSelect per accedere "programmaticamente" agli elementi selezionati.
Questo dal punto di vista teorico...se la soluzione è utile, ci addentriamo nei dettagli tecnici successivamente.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
"Da client aggiungo" mi spaventa un po'... ma cmq hai provato conOriginariamente inviato da pietro09
Da client aggiungo...
codice:For Each lb As ListItem In ListBox1.Items If lb.Selected = True Then End If Next
Saluti a tutti
Riccardo
Scusate ma forse non mi sono spiegato bene.
Ho un:
quindi una select con selezione multipla e runat=server.codice:<asp:ListBox id="dv1_titolari" runat="server" SelectionMode="Multiple" onchange="controllo_titolare_selezionato(this);">
Popolo questa lista nel server nei soliti modi.
Nel client aggiungo elementi alla lista (ad esempio, se un nome non esiste nel database, apro un popup di immissione e, quando confermo, aggiungo l'elemento alla lista e chiudo il popup)
Adesso, nella pagina principale, faccio il submit e, in un certo evento, controllo gli elementi della lista selezionati.
Il metodo che avete proposto (cioè, il metodo che viene consigliato in letteratura) non funziona, perché non tiene conto degli elementi aggiunti nel client e selezionati dall'utente.
Perciò, l'unico modo è fare un passo indietro, e andare a vedere cosa restituisce la variabile form di nome uguale al name della lista![]()
A proposito, quando la pagina ritorna al client, vengono correttamente conservati gli elementi selezionati della lista, tranne quelli aggiunti nel client...
Insomma, un controllo che altri (e io mi associo) hanno definito "tonto"
Ciao![]()
Pietro
Secondo me, se si utilizza ASP.NET e si sceglie di adoperare controlli lato server, si dovrebbe spostare la maggior parte del lavoro sul server, appunto.
In questo caso, io avrei inserito una casella di testo (TextBox) in cui digitare un elemento da inserire e un pulsante (Button) che, una volta premuto, inserisca lato server il testo digitato nella casella all'interno della ListBox.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Qui entriamo nella filosofiaOriginariamente inviato da alka
Secondo me, se si utilizza ASP.NET e si sceglie di adoperare controlli lato server, si dovrebbe spostare la maggior parte del lavoro sul server, appunto.
In questo caso, io avrei inserito una casella di testo (TextBox) in cui digitare un elemento da inserire e un pulsante (Button) che, una volta premuto, inserisca lato server il testo digitato nella casella all'interno della ListBox.. Ti dico come la penso.
Io debbo fare una pagina che funzioni. Punto e basta.
E per fare questo sono disposto anche ad usare javascript![]()
Ciao![]()
Pietro
Capisco...Originariamente inviato da pietro09
Qui entriamo nella filosofia.
Non è un discorso così filosofico, anzi è molto pratico: se usi una tecnologia "server side" per lavorare poi esclusivamente "client side", a cosa ti serve ASP.NET?
In tal caso, prova la soluzione che ti ho indicato; secondo me, è quella più adatta a lavorare nel contesto ASP.NET.Originariamente inviato da pietro09
Ti dico come la penso.
Io debbo fare una pagina che funzioni. Punto e basta.
Sono certo che JavaScript lato client possa rendere le cose più performanti (non è necessario ricaricare una pagina per visualizzare un semplice elemento aggiunto alla ListBox), tuttavia se vuoi poi manipolare il valore lato server arriverai a faticare il doppio.
Non mi viene in mente altro.![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
ma passando da request.form riesci a vedere i valori aggiunti e se sono selezionati?
Originariamente inviato da DeBe99
ma passando da request.form riesci a vedere i valori aggiunti e se sono selezionati?
in ginocchio sotto i ceciOggi mi sento cattivo
![]()
Non è una domanda da DeBe99![]()
Allora, dai tempi di asp mi sono fatto una sobroutine che visualizza tutti i parametri passati, form, querystring, session, cookie, e la utilizzo per debug. E' stupidotta ma serve allo scopo.
Se hai una <select (scusate ma un listbox server viene renderizzato così) con name="pippo" a selezione multipla, dentro un form, nel server, con request.Form("pippo") ottieni una cosa così:
chiave1,chiave2,chiave3
cioè, l'elenco dei value selezionati separati da virgola
Il recupero è banale. Ciao![]()
Pietro
pezzo di codice incriminato. Ho commentato le istruzioni usate prima
codice:'Dim vli() As ListItem Dim i% 'Dim LI As ListItem Dim dv1_titolari$() Try 'vli = ItemSelezionati(Me.dv1_titolari) 'If (vli.Length = 0) Then Throw New Exception("La lista dei titolari deve contenere almeno un elemento") dv1_titolari = Trim(Request.Form("dv1_titolari")).Split(","c) If (dv1_titolari.Length = 0) Then Throw New Exception("La lista dei titolari deve contenere almeno un elemento") 'For Each LI In vli For Each LI As String In dv1_titolari 'ID_SOGGETTO = CInt(LI.Value) ID_SOGGETTO = CInt(LI)
Pietro