Visualizzazione dei risultati da 1 a 5 su 5

Discussione: DropDownList a Runtime

  1. #1

    DropDownList a Runtime

    Salve...
    ho fatto una ricerca nel form prima di postare questo problema, ma non so se colpa mia di una svista o altro ma non ho trovato una soluzione.
    Per questo chiedo aiuto direttamente.

    Qualcuno sa perchè se creo una dropdownlist in designtime funziona in modo impeccabile mentre se la creo in runtime quando vado a cambiare selezione mi risponde sempre il primo valore?

    il codice che uso è il seguente:
    codice:
               Dim ddlSottoCategoria As New DropDownList
                ddlSottoCategoria.Text = Nothing
                ddlSottoCategoria.ID = "txtBox" '& x.ToString
                ddlSottoCategoria.AutoPostBack = True
                Panel1.Controls.Add(ddlSottoCategoria)
                ddlSottoCategoria.Visible = True
                If ddlSottoCategoria.Items.Count = 0 Then
                    connetti(Session("database"))
                    SQL = "SELECT * FROM ecommerce_categorie WHERE appartenenteCategoria = " & ddlCategoria.SelectedValue & " AND titoloCategoria <> 'Tutte'"
                    objCmd = New SqlCommand(SQL, objConn)
                    objDR = objCmd.ExecuteReader()
    
                    Dim itm As New ListItem
                    itm.Text = "Seleziona una categoria"
                    itm.Value = 0
                    ddlSottoCategoria.Items.Add(itm)
                    Do While (objDR.Read())
                        Dim itm2 As New ListItem
                        itm2.Text = objDR("titoloCategoria").ToString()
                        itm2.Value = objDR("idCategoria")
                        ddlSottoCategoria.Items.Add(itm2)
                    Loop
                End If
    a priori dico che non posso fare il controllo se è un postbak perchè questa dropdownlist viene popolata e visualizzata da un postback, se facessi il controllo non si popolerebbe.
    in ogni caso ho fatto anche prove mettendo dei valori manuali e non prendendoli da un db e inserendo il controllo nt ispostback e mi da lo stesso risultato.

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: Sinceramente non capisco. Ho preso il tuo codice. L'ho adattato per collaudarlo, commentando il codice di riempimento e aggiungendo due altre righe non indispensabili.

    A me va benissimo :master:

    codice:
    Option Strict On
    Imports l = libreria.ModuloWeb
    
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim ddlSottoCategoria As New DropDownList
            ddlSottoCategoria.Text = Nothing
            ddlSottoCategoria.ID = "txtBox" '& x.ToString
            ddlSottoCategoria.AutoPostBack = True
            Panel1.Controls.Add(ddlSottoCategoria)
            ddlSottoCategoria.Visible = True
    
            'If ddlSottoCategoria.Items.Count = 0 Then
            '    connetti(Session("database"))
            '    Sql = "SELECT * FROM ecommerce_categorie WHERE appartenenteCategoria = " & ddlCategoria.SelectedValue & " AND titoloCategoria <> 'Tutte'"
            '    objCmd = New SqlCommand(Sql, objConn)
            '    objDR = objCmd.ExecuteReader()
    
            '    Dim itm As New ListItem
            '    itm.Text = "Seleziona una categoria"
            '    itm.Value = 0
            '    ddlSottoCategoria.Items.Add(itm)
            '    Do While (objDR.Read())
            '        Dim itm2 As New ListItem
            '        itm2.Text = objDR("titoloCategoria").ToString()
            '        itm2.Value = objDR("idCategoria")
            '        ddlSottoCategoria.Items.Add(itm2)
            '    Loop
            'End If
    
    
            AddHandler ddlSottoCategoria.SelectedIndexChanged, AddressOf ddlSottoCategoria_SelectedIndexChanged
            msole.FillListControl(ddlSottoCategoria, gl.StringaConnessioneRegioniProvinceComune, "regioni", "nome_regione", "id_regione", New ListItem("", ""))
    
        End Sub
    
        Protected Sub ddlSottoCategoria_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim d As DropDownList = DirectCast(sender, DropDownList)
            l.PrintLn(d.SelectedItem.Text, "SelectedItem.Text")
        End Sub
    End Class
    Pietro

  3. #3
    Prova ad abilitare EnableViewState nelle proprietà della DropDownList. Funziona ?
    visita il mio sito: www.gm-studio.net
    visita il mio blog:www.alessandromastronardi.com

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da papillon68
    Prova ad abilitare EnableViewState nelle proprietà della DropDownList. Funziona ?
    FUNZIONA con ViewState abilitato o no. Questa è la pagina completa di collaudo:

    pagina
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
    
    <!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></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" EnableViewState="false" Text=""></asp:Label>
            <hr />
            <asp:Panel ID="Panel1" runat="server">
            </asp:Panel>
        </div>
        </form>
    </body>
    </html>
    codice
    codice:
    Option Strict On
    Imports l = libreria.ModuloWeb
    
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim ddlSottoCategoria As New DropDownList
            ddlSottoCategoria.Text = Nothing
            ddlSottoCategoria.ID = "txtBox" '& x.ToString
            ddlSottoCategoria.AutoPostBack = True
            Panel1.Controls.Add(ddlSottoCategoria)
            ddlSottoCategoria.Visible = True
    
            'If ddlSottoCategoria.Items.Count = 0 Then
            '    connetti(Session("database"))
            '    Sql = "SELECT * FROM ecommerce_categorie WHERE appartenenteCategoria = " & ddlCategoria.SelectedValue & " AND titoloCategoria <> 'Tutte'"
            '    objCmd = New SqlCommand(Sql, objConn)
            '    objDR = objCmd.ExecuteReader()
    
            '    Dim itm As New ListItem
            '    itm.Text = "Seleziona una categoria"
            '    itm.Value = 0
            '    ddlSottoCategoria.Items.Add(itm)
            '    Do While (objDR.Read())
            '        Dim itm2 As New ListItem
            '        itm2.Text = objDR("titoloCategoria").ToString()
            '        itm2.Value = objDR("idCategoria")
            '        ddlSottoCategoria.Items.Add(itm2)
            '    Loop
            'End If
    
            ddlSottoCategoria.EnableViewState = False
            AddHandler ddlSottoCategoria.SelectedIndexChanged, AddressOf ddlSottoCategoria_SelectedIndexChanged
            msole.FillListControl(ddlSottoCategoria, gl.StringaConnessioneRegioniProvinceComune, "regioni", "nome_regione", "id_regione", New ListItem("", ""))
    
        End Sub
    
        Protected Sub ddlSottoCategoria_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim d As DropDownList = DirectCast(sender, DropDownList)
            Me.Label1.Text = d.SelectedItem.Text
        End Sub
    End Class
    Pietro

  5. #5
    Grazie per le risposte...
    Ho provato lo script che mi avete lasciato e in un file di prova funziona correttamente...

    Questa sera lo proverò all'interno delle mie pagine e vi faccio sapere.

    Grazie per il tempo dedicatomi

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