DropDownList non istanziato su page load

lunedì 04 settembre 2006 - 10.25

FLenzo Profilo | Newbie

Salve

Ho da poco cominciato a migrare ad asp.net 2.0 e non riesco a capire il funzionamento di DropDownList associati a SqlDataSource.


In pratica Ho configurato una DDL (DropDownList) con una semplice select per eseguire il binding da un sqldatasouce, ma sull evento page load la ddl non viene istanziata (ha valore Nothing). in asp.net 1.1 utilizzavo un datatable per effettuare il binding e tutto funzionava ma con questo nuovo oggetto non riesco ad ottenere l'istanza del controllo sul page load. L'errore generato è "Object reference not set to an instance of an object."

Grazie a chi mi vorrà aiutare.

FLenzo Profilo | Newbie

Non proprio.

A design time popolo la DDL ma mi serve cambiare l'elemento selezionato a run time durante il page load.

ecco il codice run time

Private Sub Popola(ByVal indice As Integer)
T_Dipendenti = Page.Session.Item("ElDip")
With T_Dipendenti
ddSettore.SelectedItem.Text = .Rows(indice).Item("Settore")
End With
End Sub

Protected Sub cmdNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdNext.Click
Indice = Page.Session.Item("Indip")
Indice += 1
Page.Session.Add("Indip", Indice)
Popola(Indice)
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Indice = 0
Popola(Indice)
End If
End Sub

Ovviamente ho trascritto una sintesi, manca la parte di popolamento della tabella ma ti posso assicurare che funziona tutto.

Non funziona invece la parte cmdNext_Click mi genera lo stesso errore, come se la DDL ddSettore non fosse istanziata.

Ho provato anche su una nuova pagina a creare una DDL associata a design time con un dataset. se cerco di accedere alle proprietà della DDL durante il page load si verifica lo stesso errore. Evidentemente gli il binding degli oggetti viene fatto dopo il page load e quindi l'oggetto viene istanziato successivamente.

Una soluzione potrebbe essere tornare all'antico e utilizzare delle tabelle e fare il binding "a mano" ma non avrebbe senso non utilizzare i nuovi oggetti messi a disposizione.


FLenzo Profilo | Newbie

Chiedo scusa. In effetti mi sono accorto che la DDL viene istanziata sul page load (basta fare un print nella finestra Controllo Immediato e mi ritorna l'oggetto corretamente istanziato) ma non risulta popolata quindi la proprietà Selecteditem.text genera una eccezione.

Ho provato a spostare i controlli sull'evento databound ma come faccio a sapere che la DDL è stata completamente popolata e quindi l'evento databound riguarda l'ultimo item?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5