Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di M@nu
    Registrato dal
    Dec 2001
    Messaggi
    352

    problema con usercontrol

    ho una dropdownlist in un usercontrol.
    in una pagina (paginachiamante) in cui chiamo questo uc devo assegnare il selectedvalue alla ddl dello uc.

    ma succede una cosa che non capisco.
    quando carica la paginachiamante carica la ddl dello uc senza che io chiami la funzione che carica il ddl, e fin qui tutto liscio.
    successivamente, nella load della paginachiamante chiamo una funzione che estrae dei dati da un db e riepie dei campi, tra cui VORREI che selezionasse il valore della ddl dello uc.

    e faccio una cosa di questo genere
    codice:
    Dim m_Funzioni As New uc_ddl_lingue
    m_Funzioni.ShowDdlLingue("EN")
    facendo il debug, entra correttamente nello us e nella funzione che carica la ddl ma dove c'è riferimento al nome del controllo da errore "riferimento ad un oggetto non impostato su un'istanza d'oggetto."

    Perchè??!!!
    il controllo ddl dello usercontrol è già caricato, perchè non lo trova?

    Codice uc:
    codice:
    Imports System.Data.SqlClient
    
    Public Class uc_ddl_lingue
    Inherits System.Web.UI.UserControl
    
    #Region " Codice generato da Progettazione Web Form "
    
    'Chiamata richiesta da Progettazione Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
    End Sub
    Protected WithEvents ddl_lingue As System.Web.UI.WebControls.DropDownList
    Protected WithEvents lbl_conferma_uc_ddl_lingue As System.Web.UI.WebControls.Label
    
    'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
    'Non spostarla o rimuoverla.
    Private designerPlaceholderDeclaration As System.Object
    
    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
    'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
    'Non modificarla nell'editor del codice.
    InitializeComponent()
    ShowDdlLingue("")
    End Sub
    
    #End Region
    
    Public Sub ShowDdlLingue(ByVal LangSel As String)
    Dim j As Int16
    Dim SqlLang As String = "select uid, langName from SS_LINGUE;"
    Dim DR As SqlDataReader
    'apro connessione
    Dim objDB As New DBAccess.ADOObject
    Dim Conn As SqlConnection = objDB.ApriConn
    '----------------
    MyCommandSQL = New SqlCommand(SqlLang, Conn)
    Try
        Me.ddl_lingue .Items.Add("<seleziona>")
        Me.ddl_lingue.Items.Item(j).Value = ""
    
        DR = MyCommandSQL.ExecuteReader
        If DR.HasRows Then
    	j = 1
    	Do While DR.Read
    	    Me.ddl_lingue.Items.Add(DR("langName"))
    	    Me.ddl_lingue.Items.Item(j).Value = DR("uid")
    	    Me.ddl_lingue.Visible = True
    	    j += 1
    	Loop
        End If
    Catch ex As Exception
        Me.lbl_conferma_uc_ddl_lingue.Text = "
    
    Si è verificato un errore!
    Se l'errore persiste contattare il webmaster</p>
    
    CaricaLingue()
    " & Err.Description & "</p>"
    End Try
    objDB.ChiudiConn(Conn) 'chiudo connessione
    ddl_lingue.SelectedValue = LangSel
    End Sub
    End Class
    praticamente la seconda volta che ci passa da errore dove è scritto rosso.

    io non capisco......
    IL MONDO È BELLO PERCHÉ È VARIO.

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Naturalmente dopo la scritta in rosso nel codice non c'è lo spazio vero?
    Sicuramente avrai le tue esigenze per farlo così, ma se al posto di creare un controllo exnovo con
    codice:
    Inherits System.Web.UI.UserControl
    fai l'override di un listbox con:
    codice:
    Inherits System.Web.UI.ListBox
    hai a disposizione tutte le property che ti mette a disposizione la classe base(ListBox)e in più puoi aggiungerne di nuove personalizzate.
    Ciao
    Legnetto

  3. #3
    Non ne sono sicuro ma...
    Per selezionare la ddl all'interno del tuo ascx, mi sembra,
    che devi cercare il controllo nella collection dei controlli
    del tuo ascx..

    Dim c as TUOCONTROLLO
    Dim ddl as DropDownList

    ddl = c.FindControl("ddl_lingue")


    Fammi sapere
    Ciao
    Kalman
    Kalman

  4. #4
    Utente di HTML.it L'avatar di M@nu
    Registrato dal
    Dec 2001
    Messaggi
    352
    grazie ragazzi per la risposta.

    devo provare entrambe le vostre soluzioni.

    per il momento ho fatto uno scorrimento degli item.

    vi faccio sapere! grazie intanto!
    IL MONDO È BELLO PERCHÉ È VARIO.

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.