277 messaggi dal 20 maggio 2001
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:

 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?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non ho avuto modo di provare ma a guardarlo sembra ok.
Potrebbe essere che disabilitare i controlli nel Page_Load abbia un qualche effetto sul ricaricamento dei valori. Mi riferisco a questo:
[url]
a_Provincia.Enabled = false;
a_Paese.Enabled = false;


Per il momento prova a togliere queste due righe di codice e vedi se funziona.
Se non dovesse funzionare, fammi sapere che poi ci do un'occhiata domani.

ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 20 maggio 2001
Nulla di fatto anche eliminando le due righe in questione. Ti allego il codice di entrambe le pagine:

NewActivityAccount.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewActivityAccount.aspx.cs" Inherits="Project.Registration.NewActivityAccount"  ValidateRequest="true"%>


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        Utente loggato:
        <asp:Label ID="lblUSerID" runat="server"></asp:Label>
    
        <br />
        FORM REGISTRAZIONE LOCALE</div>
        <p>
            Referente</p>
        <p>
            Nome:
            <asp:TextBox ID="r_Name" runat="server"></asp:TextBox>
        </p>
        <p>
            Cognome:
            <asp:TextBox ID="r_Surname" runat="server"></asp:TextBox>
        </p>
        <p>
            Mail:
            <asp:TextBox ID="r_Mail" runat="server"></asp:TextBox>
        </p>
        <p>
            Telefono:
            <asp:TextBox ID="r_Phone" runat="server"></asp:TextBox>
        </p>
        <p>
            Cellulare:
            <asp:TextBox ID="r_MobilePhone" runat="server"></asp:TextBox>
        </p>
        <p>
            Dati locale</p>
        <p>
            Nome locale:
        <asp:TextBox ID="a_ActivityName" runat="server"></asp:TextBox>
        </p>
        <p>
            Tipo locale:
            <asp:TextBox ID="a_ActivityType" runat="server"></asp:TextBox>
        </p>
        <p>
            Regione:
            <asp:ListBox ID="a_Regione" runat="server" Rows="1" AutoPostBack="True" OnSelectedIndexChanged="a_Regione_SelectedIndexChanged">
                <asp:ListItem Selected="True" Value="0">Seleziona</asp:ListItem>
                <asp:ListItem Value="1">Abruzzo</asp:ListItem>
                <asp:ListItem Value="2">Basilicata</asp:ListItem>
                <asp:ListItem Value="3">Calabria</asp:ListItem>
                <asp:ListItem Value="4">Campania</asp:ListItem>
                <asp:ListItem Value="5">Emilia-Romagna</asp:ListItem>
                <asp:ListItem Value="6">Friuli-Venezia Giulia</asp:ListItem>
                <asp:ListItem Value="7">Lazio</asp:ListItem>
                <asp:ListItem Value="8">Liguria</asp:ListItem>
                <asp:ListItem Value="9">Lombardia</asp:ListItem>
                <asp:ListItem Value="10">Marche</asp:ListItem>
                <asp:ListItem Value="11">Molise</asp:ListItem>
                <asp:ListItem Value="12">Piemonte</asp:ListItem>
                <asp:ListItem Value="13">Puglia</asp:ListItem>
                <asp:ListItem Value="14">Sardegna</asp:ListItem>
                <asp:ListItem Value="15">Sicilia</asp:ListItem>
                <asp:ListItem Value="16">Toscana</asp:ListItem>
                <asp:ListItem Value="17">Trentino-Alto Adige</asp:ListItem>
                <asp:ListItem Value="18">Umbria</asp:ListItem>
                <asp:ListItem Value="19">Valle d&#39;Aosta</asp:ListItem>
                <asp:ListItem Value="20">Veneto</asp:ListItem>
            </asp:ListBox>
        </p>
        <p>
            Provincia:
            <asp:ListBox ID="a_Provincia" runat="server" Rows="1" OnSelectedIndexChanged="a_Provincia_SelectedIndexChanged"></asp:ListBox>
        </p>
        <p>
            Paese:
            <asp:ListBox ID="a_Paese" runat="server" Rows="1" EnableViewState="False" OnDataBinding="a_Provincia_SelectedIndexChanged"></asp:ListBox>
        </p>
        <p>
            Cap:
        </p>
        <asp:TextBox ID="a_Cap" runat="server"></asp:TextBox>
        <p>
            Orario:
            <asp:TextBox ID="a_Orario" runat="server"></asp:TextBox>
        </p>
        <p>
            Giorno chiusura:
            <asp:TextBox ID="a_Chiusura" runat="server"></asp:TextBox>
        </p>
        <p>
            Sito ufficiale:
            <asp:TextBox ID="a_Website" runat="server"></asp:TextBox>
        </p>
        <p>
            Telefono:
            <asp:TextBox ID="a_Telefono" runat="server"></asp:TextBox>
        </p>
        <p>
            Breve descrizione:
            <asp:TextBox ID="a_SmallDescription" runat="server"></asp:TextBox>
        </p>
        <p>
            Descrizione estesa:
            <asp:TextBox ID="a_Description" runat="server"></asp:TextBox>
        </p>
        <asp:Button ID="a_Submit" runat="server" Text="Invia" OnClick="a_Submit_Click" />
    </form>
</body>
</html>


NewActivityAccount.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;

namespace Project.Registration
{
    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();
                }
            }
        }

       
    }
}
3.939 messaggi dal 28 gennaio 2003
Mi sbaglierò ma mi pare che manchi AutoPostBack="True" nelle province
11.886 messaggi dal 09 febbraio 2002
Contributi
Sì, Pietro ha ragione. Inoltre, dovresti togliere OnDataBinding="a_Provincia_SelectedIndexChanged" dal paese. A quel punto, facendo queste due modifiche, funziona.

ciao,
Moreno
Modificato da BrightSoul il 23 luglio 2017 21.07 -

Enjoy learning and just keep making
277 messaggi dal 20 maggio 2001
Perfetto, grazie ragazzi! :)
Un dubbio però mi balena ugualmente nella testa: comemai, nonostante nell'altro listbox non ci fosse l'autopostback, le provincie venivano visualizzate ugualmente?
Modificato da danyw3b il 24 luglio 2017 12.22 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Sì, nel codice che hai postato, la ListBox delle region ha AutoPostback="true". Eccolo qui:

<asp:ListBox ID="a_Regione" runat="server" Rows="1" AutoPostBack="True" OnSelectedIndexChanged="a_Regione_SelectedIndexChanged">


Serve appunto a causare un postback immediato nel momento in cui l'utente seleziona un valore diverso dalla listbox.

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.