in una pagina asp.net con codice c# ho due DropDownList dove devo popolare la secondo sulla base della scelta della prima andando a leggere da un db.
qualcuno può aiutarmi
in una pagina asp.net con codice c# ho due DropDownList dove devo popolare la secondo sulla base della scelta della prima andando a leggere da un db.
qualcuno può aiutarmi
Ciao,
Con l' evento SelectedIndexChanged intercetti ogni cambiamento di selezione della prima combo
e dentro la funzione dell' evento ti recuperi il testo del valore selezionato con nomeDropDownList.SelectedItem.Text e fai la query per caricare il dataTable con cui popolerai la seconda DropDownList
ciao grazie per avermi risposto, non ho mai fatto una cosa del genere, ma così facendo posso inserire una query al db di selezione alla tabella con il valore della prima dropdownlist e con il risultato posso popolare la seconda?
La risposta è stata data. Solo a titolo di esempio, questo è un caso di province-comuni
pagina aspx
codice:<%@ Page Language="VB" AutoEventWireup="false" CodeFile="popolare_dropdown_provincie_comuni.aspx.vb" Inherits="CorsoApogeo_wrox_controlli_iterativi_popolare_dropdown_provincie_comuni" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Pagina senza titolo</title> <link href="../../../stili/Styles.css" rel="stylesheet" type="text/css" /> </head> <body> <h3> Popolare due DropDown</h3> <hr width="100%" size="1"> <form id="Form1" method="post" runat="server"> Provincie: <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataTextField="nome" DataValueField="id_provincia"> </asp:DropDownList>comuni: <asp:DropDownList ID="DropDownList2" runat="server" DataTextField="nome_comune" DataValueField="id_comune" EnableViewState="False"> </asp:DropDownList></p> <asp:Label ID="Label1" runat="server"></asp:Label></p> </form> </body> </html>
pagina di codice
codice:Option Strict On Partial Class CorsoApogeo_wrox_controlli_iterativi_popolare_dropdown_provincie_comuni Inherits System.Web.UI.Page Private Sub PopolaProvincie() Dim sql$ = "SELECT ID_PROVINCIA, NOME FROM PROVINCE ORDER BY NOME" Dim Reader As OleDbDataReader Try Reader = msole.GetDataReader(StringaConnessioneTest, sql) Me.DropDownList1.DataSource = Reader Me.DropDownList1.DataBind() Catch er As Exception Me.Label1.Text = er.Message Finally Reader.Close() End Try End Sub Private Sub PopolaComuni(ByVal id_provincia%) Dim sql$ = "SELECT ID_COMUNE, NOME_COMUNE FROM COMUNI WHERE ID_PROVINCIA = " & id_provincia.ToString & " ORDER BY NOME_COMUNE" Dim Reader As OleDbDataReader Try Reader = msole.GetDataReader(StringaConnessioneTest, sql) Me.DropDownList2.DataSource = Reader Me.DropDownList2.DataBind() Catch er As Exception Me.Label1.Text = er.Message Finally Reader.Close() End Try End Sub Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Inserire qui il codice utente necessario per inizializzare la pagina If Not Me.IsPostBack Then PopolaProvincie() PopolaComuni(CType(Me.DropDownList1.SelectedItem.Value, Integer)) End If End Sub Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged PopolaComuni(CType(Me.DropDownList1.SelectedItem.Value, Integer)) End Sub End Class
Naturalmente è in basic, da prendere solo come spunto.![]()
Pietro
grazie per l'esempio;
guarda caso mi serve prorpio per provincia->comune che devo mettere un un form che già funziona ma purtroppo non viene eseguito come runat=server, come posso ovviare a questo problema?
ma i controlli server funzionano solo dentro un form runat server :master:Originariamente inviato da barnico
grazie per l'esempio;
guarda caso mi serve prorpio per provincia->comune che devo mettere un un form che già funziona ma purtroppo non viene eseguito come runat=server, come posso ovviare a questo problema?
Pietro
appunto;
come faccio a risolvere questo problema, io ho un tasto submit che mi invia il form su un'altra pagina, come potrei risolvere il problema facendo in modo che il tutto funzioni in modo server e se clicco sul pulsante invia invia tutti i dati su questa seconda pagina?
non ho esperienza, potresti darmi una mano a capire come fare?
nella pagina che riceve i dati ti fai le Request dei campi che stavano nel form della tua pagina iniziale.
Per capirci, se hai un campo che si chiama txtNome dove ricevi i parametri devi fare :
codice:Nome = Request("txtNome")
...NO ONE IS INNOCENT ANYMORE...
non è questo il problema;
attualmente ho una pagina asp.net con cidice c# dove ho un form che al clic del pulsante submit invia i dati alla pagina prova.aspx, dove vengono catturati i dati +/- come dici tu, il form della pagina non è dichiarato runat=server e nall'action del form c'è la pagina prova.aspx;
se voglio implementare il metodo suggerito gentilemnte dall'amico pietro09 bisogno come prima cosa attivare il form in modo atrun=server in quanto i controlli DropDownList sono runat=server;
il mio problema è questo, dichiarando il form runat=server per implementare il metodo suggerito, se faccio clic la pagina viene ricaricata non viene più inviata alla pagina prova.aspx
Finalmente una spiegazione: meglio tardi che maiOriginariamente inviato da barnico
non è questo il problema;
attualmente ho una pagina asp.net con cidice c# dove ho un form che al clic del pulsante submit invia i dati alla pagina prova.aspx, dove vengono catturati i dati +/- come dici tu, il form della pagina non è dichiarato runat=server e nall'action del form c'è la pagina prova.aspx;
se voglio implementare il metodo suggerito gentilemnte dall'amico pietro09 bisogno come prima cosa attivare il form in modo atrun=server in quanto i controlli DropDownList sono runat=server;
il mio problema è questo, dichiarando il form runat=server per implementare il metodo suggerito, se faccio clic la pagina viene ricaricata non viene più inviata alla pagina prova.aspx![]()
Metti il form runat server, come fanno tutti.
Il pulsante lo dichiari in modo che invii i dati in un'altra pagina
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="prova.aspx" />
Pietro