Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139

    [ASP.NET]Listbox tra asp.net e javascript

    Ciao a tutti.
    Ho creato una pagina con due listbox affiancate. In mezzo alle due lista ci sono due pulsanti per spostare gli elementi da una all' altra selezionandoli e cliccando sul pulsante. Questo passaggio lo faccio usando javascript. Il mio problema nasce quando devo leggere questi dati da asp.net, infatti al server arrivano i vecchi elementi delle liste, non quelli che ho spostato.
    Come posso fare per ricevere i nuovi dati?

  2. #2
    Nel caricamento delle liste tramite ASP.NET hai gestito bene il PostBack? Non vorrei che tu vada a caricare su ogni PostBack nuovamente tutti gli item per ogni lista...
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    L'ho fatto tempo fa LATO SERVER così:

    codice:
    <form id="Form1" method="post" runat="server">
    	<asp:ListBox id="ListBox1" SelectionMode=Multiple Width=300 Height=300 runat="server"></asp:ListBox>
    	<asp:Button id="Button1" runat="server" Text=">> Aggiungi"></asp:Button>
    	<asp:Button id="Button2"  runat="server" Text="Rimuovi <<"></asp:Button>
    	<asp:ListBox id="ListBox2" Width=300 Height=300 SelectionMode=Multiple runat="server"></asp:ListBox>
    </form>

    codice:
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim temp_arraylist1 As New ArrayList
            Dim temp_arraylist2 As New ArrayList
    
    
            For Each elementolista As System.Web.UI.WebControls.ListItem In ListBox1.Items
                If elementolista.Selected = True Then
                    ' destinato alla seconda listbox
                    temp_arraylist2.Add(elementolista)
                Else
                    ' destinato alla prima listbox
                    temp_arraylist1.Add(elementolista)
                End If
            Next
    
            ListBox1.DataSource = temp_arraylist1
            ListBox1.DataBind()
    
            If ListBox2.Items.Count = 0 Then
                ListBox2.DataSource = temp_arraylist2
                ListBox2.DataBind()
            Else
                Dim extra_arraylist As New ArrayList
                ' prendo gli elementi presenti nella listbox2
                For Each elemento As ListItem In ListBox2.Items
                    extra_arraylist.Add(elemento)
                Next
                ' ...e li aggiungo a quelli selezionati nella prima
                For Each elemento2 As ListItem In temp_arraylist2
                    extra_arraylist.Add(elemento2)
                Next
                ' e poi metto il totale degli elementi nella listbox2
                ListBox2.DataSource = extra_arraylist
                ListBox2.DataBind()
            End If
        End Sub
    
    
        Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim temp_arraylist1 As New ArrayList
            Dim temp_arraylist2 As New ArrayList
    
            For Each elementolista As System.Web.UI.WebControls.ListItem In ListBox2.Items
                If elementolista.Selected = True Then
                    ' destinato alla seconda listbox
                    temp_arraylist1.Add(elementolista)
                Else
                    ' destinato alla prima listbox
                    temp_arraylist2.Add(elementolista)
                End If
            Next
    
            ListBox2.DataSource = temp_arraylist2
            ListBox2.DataBind()
    
            If ListBox1.Items.Count = 0 Then
                ListBox1.DataSource = temp_arraylist1
                ListBox1.DataBind()
            Else
                Dim extra_arraylist As New ArrayList
                ' prendo gli elementi presenti nella listbox1
                For Each elemento As ListItem In ListBox1.Items
                    extra_arraylist.Add(elemento)
                Next
                ' ...e li aggiungo a quelli selezionati nella seconda
                For Each elemento1 As ListItem In temp_arraylist1
                    extra_arraylist.Add(elemento1)
                Next
                ' e poi metto il totale degli elementi nella listbox1
                ListBox1.DataSource = extra_arraylist
                ListBox1.DataBind()
            End If
        End Sub
    Se lo fai lato client legge i dati dell'ultimo bind...

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: [ASP.NET]Listbox tra asp.net e javascript

    Originariamente inviato da ciat
    Ciao a tutti.
    Ho creato una pagina con due listbox affiancate. In mezzo alle due lista ci sono due pulsanti per spostare gli elementi da una all' altra selezionandoli e cliccando sul pulsante. Questo passaggio lo faccio usando javascript. Il mio problema nasce quando devo leggere questi dati da asp.net, infatti al server arrivano i vecchi elementi delle liste, non quelli che ho spostato.
    Come posso fare per ricevere i nuovi dati?
    Ma i dati selezionati o tutti i dati? :master:
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    Re: Re: [ASP.NET]Listbox tra asp.net e javascript

    Originariamente inviato da pietro09
    Ma i dati selezionati o tutti i dati? :master:
    quelli di entrambe le liste, disposti diversamente da com'erano inizialmente

  6. #6
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139
    Grazie per la risposta, djciko.

    Ho provato con la tua soluzione ed è tutto a posto.

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da ciat
    Grazie per la risposta, djciko.

    Ho provato con la tua soluzione ed è tutto a posto.
    Vedi se riesci anche a preservare l'ordine...

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: Re: Re: [ASP.NET]Listbox tra asp.net e javascript

    Originariamente inviato da djciko
    quelli di entrambe le liste, disposti diversamente da com'erano inizialmente
    :master: mi pare che stai risolvendo lato server. Ma la domanda mi pare fosse diversa (almeno credo :master: ): sposto gli elementi lato client e voglio i risultati lato server

    Pietro

  9. #9
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139
    In effetti la domanda era di spostare lato client e salvare lato server, ma alla fine ho scelto di fare tutto lato server per semplicità.

    Il problema del client è che vengono passati al server solo i valori selezionati nella listbox.
    Ho provato con javascript a selezionare tutti gli elementi con l' evento onclick prima del postback, ma facendo così aspnet restituisce un errore che non sono riuscito a risolvere.

    L' errore suggerisce di settare EnableEventValidation a true nel web.config o nell' header della pagina, ho provato a cercare un pò in giro ma non ho ancora avuto tempo di approfondire.

    All' ordinamento dei dati ci penso domani.

  10. #10
    semplice, DOT.NET ha un sistema integrato per la sicurezza che permette di controllare lo stato di ogni controllo ed evitare attacchi di un certo tipo, cmq devi specificare, nella direttiva @page EnableEventValidation="false"
    e successivamente non hai più problemi con le tue funzioni javascript.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.