Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Listbox in cascata

  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    Listbox in cascata

    Ho 3 ListBox, rispettivamente per selezionare: Regione, Provincia, Paese. I dati vengono prelevati da un database: selezionando la regione, l'elenco delle relative provincie viene visualizzato nella Listbox, ma se da quest'ultima seleziono la provincia, non c'è verso di mostrare i relativi paesi nella listbox! Ecco il codice:

    codice:
        public partial class NewActivityAccount : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Session["ActiveUserID"] != null)
                {
                    lblUSerID.Text = Session["ActiveUserID"].ToString();
                }
                else
                {
                    Response.Redirect("../Login.aspx");
                }
    
    
                a_Provincia.Enabled = false;
                a_Paese.Enabled = false;
            }
    
    
            protected void a_Submit_Click(object sender, EventArgs e)
            {
                string connString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
                string a_UserIP = Request.ServerVariables["REMOTE_ADDR"];
                string userLoggedID = Session["ActiveUserID"].ToString();
    
    
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO Locale (UserId, RefererName, RefererSurname, RefererMail, RefererPhone, RefererMobilePhone, ActivityName, ActivityType, Regione, Provincia, Paese, Cap, Orario, Chiusura, Website, Phone, SmallDescription, Description, UserIP) VALUES(@UserID, @RefererName, @RefererSurname, @RefererMail, @RefererPhone, @RefererMobilePhone, @ActivityName, @ActivityType, @Regione, @Provincia, @Paese, @Cap, @Orario, @Chiusura, @Website, @Phone, @SmallDescription, @Description, @UserIP)", conn))
                    {
                        cmd.Parameters.AddWithValue("@UserID", userLoggedID.ToString());
                        cmd.Parameters.AddWithValue("@RefererName", r_Name.Text.ToString());
                        cmd.Parameters.AddWithValue("@RefererSurname", r_Surname.Text.ToString());
                        cmd.Parameters.AddWithValue("@RefererMail", r_Mail.Text.ToString());
                        cmd.Parameters.AddWithValue("@RefererPhone", r_Phone.Text.ToString());
                        cmd.Parameters.AddWithValue("@RefererMobilePhone", r_MobilePhone.Text.ToString());
                        cmd.Parameters.AddWithValue("@ActivityName", a_ActivityName.Text.ToString());
                        cmd.Parameters.AddWithValue("@ActivityType", a_ActivityType.Text.ToString());
                        cmd.Parameters.AddWithValue("@Regione", a_Regione.SelectedItem.Text.ToString());
                        cmd.Parameters.AddWithValue("@Provincia", a_Provincia.SelectedValue.ToString());
                        cmd.Parameters.AddWithValue("@Paese", a_Paese.SelectedValue.ToString());
                        cmd.Parameters.AddWithValue("@Cap", a_Cap.Text.ToString());
                        cmd.Parameters.AddWithValue("@Orario", a_Orario.Text.ToString());
                        cmd.Parameters.AddWithValue("@Chiusura", a_Chiusura.Text.ToString());
                        cmd.Parameters.AddWithValue("@Website", a_Website.Text.ToString());
                        cmd.Parameters.AddWithValue("@Phone", a_Telefono.Text.ToString());
                        cmd.Parameters.AddWithValue("@SmallDescription", a_SmallDescription.Text.ToString());
                        cmd.Parameters.AddWithValue("@Description", a_Description.Text.ToString());
                        cmd.Parameters.AddWithValue("@UserIP", a_UserIP.ToString());
    
    
                        conn.Open();
                        int queryStatus = cmd.ExecuteNonQuery();
    
    
                        if (queryStatus != 0)
                        {
                            Response.Write("Registrazione correttamente effettuata!");
                        }
                        else
                            Response.Write("Problemi nella fase di registrazione.");
    
    
                    }
                }
            }
    
    
            protected void a_Regione_SelectedIndexChanged(object sender, EventArgs e)
            {
              
                    a_Provincia.Enabled = true;
                    string connStringRegione = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
                    using (SqlConnection connRegione = new SqlConnection(connStringRegione))
                    {
                        using (SqlCommand cmdRegione = new SqlCommand("SELECT * FROM province WHERE idRegione=@IdRegione", connRegione))
                        {
                            cmdRegione.Parameters.AddWithValue("@IdRegione", a_Regione.SelectedValue.ToString());
                            connRegione.Open();
                            a_Provincia.DataSource = cmdRegione.ExecuteReader();
                            a_Provincia.DataTextField = "nomeProvincia";
                            a_Provincia.DataValueField = "siglaProvincia";
                            a_Provincia.DataBind();
    
    
                        }
                    }
                
                    
            }
    
    
            protected void a_Provincia_SelectedIndexChanged(object sender, EventArgs e)
            {
                a_Paese.Enabled = true;
                string connStringProvincia = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
                using (SqlConnection connProvincia = new SqlConnection(connStringProvincia))
                {
                    using (SqlCommand cmdProvincia = new SqlCommand("SELECT * FROM comuni WHERE Provincia=@idProvincia", connProvincia))
                    {
                        cmdProvincia.Parameters.AddWithValue("@idProvincia", a_Provincia.SelectedValue.ToString());
                        connProvincia.Open();
                        Response.Write(a_Provincia.SelectedValue.ToString());
                        a_Paese.DataSource = cmdProvincia.ExecuteReader();
                        a_Paese.DataTextField = "Comune";
                        a_Paese.DataValueField = "Comune";
                        a_Paese.DataBind();
                    }
                }
            }
    
    
           
        }
    Cosa sbaglio?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    per prima cosa assicurati che le province abbiano gli id giusti nella corrispondente tabella paesi

    (e prova la query SELECT * FROM comuni WHERE Provincia=XXXX esternamente con management studio, da debug di asp.net - vedendo se estrae il campo "comune")

    poi ho notato che i due campi della ListBox value e text si chiamano entrambi "comune"....
    Ultima modifica di djciko; 21-07-2017 a 16:54

  3. #3
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    La query, da SQL Server, funziona senza problemi e restituisce i risultati, nella pagina, invece, sembra proprio che l'evento non venga chiamato quando seleziono il valore dalla lista provincia. Il fatto che i campi si chiamano entrambi "comune" è normale.

    Quote Originariamente inviata da djciko Visualizza il messaggio
    per prima cosa assicurati che le province abbiano gli id giusti nella corrispondente tabella paesi

    (e prova la query SELECT * FROM comuni WHERE Provincia=XXXX esternamente con management studio, da debug di asp.net - vedendo se estrae il campo "comune")

    poi ho notato che i due campi della ListBox value e text si chiamano entrambi "comune"....
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    ma nell'evento a_Provincia_SelectedIndexChanged

    ci passa ? Sei andato in debug ? (mi stanno venendo dei dubbi sulla necessarieta' dell'autoPostback comunque)

  5. #5
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Il problema era l'assenza dell'autopostback.
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

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

    ecco (conviene sempre andare in debug e vedere se ci passa...)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.