Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    DropDownList e evento Page_Load

    Buongiorno a tutti,
    ho questo problema che mi sta facendo perdere il sonno: ho messo sulla mia pagina web una DropDownList che viene popolata in automatico leggendo dati da DB. Quando entro nella pagina voglio recuperare il valore selezionato nella DDL e scriverlo in una TextBox.

    Partendo dal pressuposto che all'inizio il valore selezionato nella DDL e' il primo (quindi non un valore nullo) scrivo semplicemente nell'evento page_Load:

    txtID.Text = myDDL.SelectedValue

    Nella TextBox non succede niente, rimane vuota, e allora capisco che in pratica quando viene caricata la pagina PRIMA viene letta la DDL e recuperato il valore e POI viene popolata. Non ci sono altre spiegazioni.

    Nei mie vari tentativi, provo allora a leggere la DDL nell'evento DataBound di questa in questo modo:

    codice:
        Protected Sub txtComuni_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
    
            ' Assegnazione
            txtID.Text = myDDL.SelectedValue
                   
        End Sub
    Ok ora funziona, la mia TextBox viene valorizzata con il valore letto, ma... se adesso nell'evento Page_Load cerco di leggere il contenuto della TextBox ed assegnarlo ad una variabile... niente!! Cioe' se faccio una cosa tipo:

    ID = txtID.Text

    la variabile risulta nulla!

    Ancora una volta immagino che l'evento Page_Load avviene prima di ogni altra cosa e quindi PRIMA viene valorizzata la variabile ID e POI caricata la DDL e letto il suo SelectedValue.

    Allora la mia DOMANDONA e': come faccio a sincronizzare gli eventi, cioe' se all'evento Load della Pae nulla succede, a quele evento devo recuperare i valori che mi servono? Per la serie scrivere una cosa tipo: quando la DDL e' popolata leggi il suo valore e assegnalo alla varibile ID!!!

    Non credo di aver capito molto l'argomento lo ammetto....
    Il mio ultimo libro:
    Giorni di Follia. Presenze inquietanti a Pescara.
    www.giornidifollia.it

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: ho fatto delle prove e non vedo problemi

    se EnableViewState del dropdown è attivo non ci sono problemi.
    codice:
    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            If Not Me.IsPostBack Then
                libreria.FillListControl(Me.DropDownList1, gl.StringaConnessioneTest, "select top 10 codice_istat_comune, nome_comune from comuni", "nome_comune", "codice_istat_comune", New ListItem("", ""))
            Else
                Me.TextBox1.Text = Me.DropDownList1.SelectedItem.Text
            End If
        End Sub
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            'Me.TextBox1.Text = Me.DropDownList1.SelectedItem.Text
        End Sub
        
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList1" runat="server">
            </asp:DropDownList>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
        </form>
    </body>
    </html>
    dove il caricamento del TextBox avviene o nell'evento Button1_Click, ma anche nell'evento load
    Pietro

  3. #3
    Intanto grazie mille per la risposta, ho visto il tuo codice e non fa un agrinzia, solo che a me non funziona.

    A scanso di equivoci ti posto la mia pagina, epurata del superfluo, magari mi sai dire dove sbaglio

    codice:
    <%@ Page Language="VB" MasterPageFile="AvisGestione.master" Title="AVIS" %>
    
    <%@ import namespace="nmsMessageBox" %>
    <%@ import namespace="System" %>
    <%@ import namespace="System.Data" %>
    <%@ import namespace="System.IO" %> 
    
    <script runat="server">
    
        ' Variabili Globali
        Dim Area As String
        Dim ID_AAProvincia As Integer
        Dim ID_AAComune As Integer
    
        ' Imposta connessione al Database
        Dim cn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("Conn").ConnectionString)
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            
            Dim cmd_Legge As New OleDb.OleDbCommand
            Dim dr_Legge As OleDb.OleDbDataReader
            Dim SQL_Legge As String = ""
            cmd_Legge.Connection = cn
            
            ' Recupera Valori passati
            Area = Request.QueryString("Area")
           
            ' Assegnazioni
            ID_AAProvincia = txtID_AAProvincia.Text
            ID_AAComune = txtID_AAComune.Text
            
            ' Recupera valori da DB
            SQL_Legge = ""
            SQL_Legge &= "SELECT Contatto FROM Contatti "
            SQL_Legge &= "WHERE Area           = '" & Area & "'"
            SQL_Legge &= " AND  ID_AAProvincia = " & ID_AAProvincia.ToString
            SQL_Legge &= " AND  ID_AAComune    = " & ID_AAComune.ToString
                    
            cn.Open()
            cmd_Legge.CommandText = SQL_Legge
            dr_Legge = cmd_Legge.ExecuteReader
                
            Dim Contatto As String = ""
            If dr_Legge.Read Then
                Contatto = dr_Legge.Item("Contatto")
            End If
            
            dr_Legge.Close()
            cn.Close()
                
            ' Assegna Valore
            txtContatto.Text = Contatto
    
        End Sub
    
        Protected Sub txtProvincie_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    
            txtID_AAProvincia.Text = txtProvincie.SelectedValue
            
        End Sub
        
        Protected Sub txtComuni_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    
            txtID_AAComune.Text = txtComuni.SelectedValue
    
        End Sub
        
        Protected Sub txtProvincie_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
    
            ' Assegnazioni
            txtID_AAProvincia.Text = txtProvincie.SelectedValue
            ID_AAProvincia = txtID_AAProvincia.Text
           
        End Sub
        
        Protected Sub txtComuni_DataBound(ByVal sender As Object, ByVal e As System.EventArgs)
    
            ' Assegnazioni
            txtID_AAComune.Text = txtComuni.SelectedValue
            ID_AAComune = txtID_AAComune.Text
    
        End Sub
        
    </script>
    Il mio ultimo libro:
    Giorni di Follia. Presenze inquietanti a Pescara.
    www.giornidifollia.it

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Il databound avviene dopo il page_load, a quel punto il listbox non è ancora popolato.
    Ciao.
    Legnetto

  5. #5
    Legnetto!!
    Acc... quello mi era chiaro, ma come faccio per fare avvenire il contarrio (diciamo cosi')??

    :master:
    Il mio ultimo libro:
    Giorni di Follia. Presenze inquietanti a Pescara.
    www.giornidifollia.it

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Io se devo caricare dei listbox mi faccio una bella funzioncina e la richiamo da dove voglio.
    Facendo così ad esempio nel page_load nella sezione che verifica il postback, lo carico e poi ho a disposizione il selecteditem.value e, il databound lo lascio perdere.
    Ciao

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Che poi se guardi il codice di Pietro fa esattamente quello che ti ho appena detto.
    Lui richiama la sua mitica "libreria" caricando il controllo lista passandogli un paio di parametri.
    Riciao

  8. #8
    Ok grazie mi avete convinto, devo rivedere tutta l'impostazione della pagina... anche se ho provato in mille modi!
    Forse l'idea di una funzione per il precaricamento della DDL e' la soluzione. Stasera ci provo.

    GRAZIE ragazzi.

    Il mio ultimo libro:
    Giorni di Follia. Presenze inquietanti a Pescara.
    www.giornidifollia.it

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.