Problemi con evento SelectedindexChanged

martedì 25 maggio 2004 - 10.06

jessy Profilo | Newbie

Ciao
Ho un problemone!!
Io ho una combobox e quando un utente clicca per selezionare una voce vorrei che si scatenasse l'evento SelectedIndexChanged e abilitare dei hyperlink.
Il problema è che quando seleziono una nuova voce nella combo, questo evento non viene scatenato.

Ecco il mio codice:

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged

Dim risp As String
Dim indice As Int16

indice = DropDownList1.SelectedIndex
risp = DropDownList1.SelectedItem.ToString()
risp = DropDownList1.SelectedValue()
out.Text = risp

If (risp <> "") Then

HyperLink1.Enabled() = True
HyperLink2.Enabled() = True
HyperLink3.Enabled() = True
HyperLink4.Enabled() = True
End If

End Sub
Qualcuno mi sa dire dove sto sbagliando e perchè non si verifica questo evento?
Spero di essere stata abbastanza chiara!
Ah volevo aggiungere che ho provato a settare AutoPostBack = True.
Questo mi permette di entrare nella subroutine ma non mantiene il valore in indice me restituisce -1 quindi come se non avessi selezionato niente!
Grazie

Giulz Profilo | Newbie

Sicuro che non fai qualcosa nel Page_Load della pagina, non so, resettare i controlli..!?
EnableViewState true?

Giulz

jessy Profilo | Newbie

Grazie giulz!
Ma non ho ben capito l'EnableViewState deve essere a true?
Prima l'ho messo ha false poi ho provato a cambiare in true e cmq in entrambi i casi non funziona!
Scrivo la mia procedura :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Codice usato per rendere visibile le diverse funzionalità a seconda dell'utente.
'e permette di disattivare i link fino a quando non viene selezionato un idcampione

'Faccio un controllo della psswd perchè ho 2 tipi di utenti a cui devo visualizzare hyperlink diversi

Dim ruolo As String
ruolo = Session.Item("ruolo")
If (ruolo.Trim() = "pv") Then
HyperLink3.Visible = False
HyperLink4.Visible = False
Else
HyperLink3.Visible = True
HyperLink4.Visible = True
End If
HyperLink1.Enabled() = False
HyperLink2.Enabled() = False
HyperLink3.Enabled() = False
HyperLink4.Enabled() = False

'riempimento delle combo prendo i dati da un DB

myComponent.SqlConnection1.Open()

Dim reader1 As System.Data.SqlClient.SqlDataReader
Dim mysql As String
Dim i As Int16
Dim al As ArrayList = New ArrayList
Dim aldata As ArrayList = New ArrayList

al.Add("Seleziona ")
aldata.Add("Seleziona ")

mysql = getCercaCamp()
myComponent.SqlCommand1.CommandText() = mysql
reader1 = myComponent.SqlCommand1.ExecuteReader()
Do While (reader1.Read = True)
Dim values(reader1.FieldCount - 1) As Object
reader1.GetValues(values)

If IsDBNull(values(0)) Then
al.Add(" ")
Else
al.Add(values(0))
End If

If IsDBNull(values(1)) Then
aldata.Add(" ")
Else
aldata.Add(values(1))
End If

Loop
DropDownList1.DataSource = al
DropDownList1.DataBind()
DropDownList2.DataSource = aldata
DropDownList2.DataBind()

DropDownList1.AutoPostBack = True

così magari.. se riesci ad aiutarmi meglio, sono disperata!

(Ti avverto il codice non è bellissimo sono alle primissime armi!)
GRAZIE MILLE!!

Giulz Profilo | Newbie

premetto che anch'io non sono cosi avanti, e scrivo in c# soprattutto, ma un'idea: prova a mettere un bel

IF IsPostBack = False THEN

all'inizio del PageLoad, xchè altrimenti tutta quella roba te la esegue ad ogni postback, cioè ad ogni richiesta al server, e invece mi pare che debba essere fatta solo al primo caricamento della pagina....nn!?
fammi sapere

jessy Profilo | Newbie

Ok. Ho provato a fare come mi hai suggerito: ma non entra lo stesso nell'evento SelectedIndexChanged.
Ho aggiunto l'if e poi ho provato a giocare con la proprietà AutoPostBack: se la metto a true e io seleziono un nuovo valore della combo non viene salvato(non entra nell'evento) e mi ricarica la pagina senza passare dalla funzione Page_load, cioè mi lascia le combo vuote.
Se la proprietà la metto a false invece non fa nulla!
spero di essere stata chiara.
Che faccio?
(La cosa che non riesco a capire e che guardando nei libri e nell'help in linea che uso, mi dà sempre questa soluzione e anche se la compio uguale non funziona!Che rabbia!)

Giulz Profilo | Newbie

..è strano, se autopostback è settato a true e tu dici che ricarica la pagina, allora quantomeno dal page_load ci deve passare, provato a vedere che succede con pagine analoghe?
Glz

jessy Profilo | Newbie

Adesso sto provando a rifarlo in un altro form.
Sembra che vada un pò meglio, ma non vorrei cantare già vittoria!
La differenza è che ho aggiunto un bottone.
Praticamente seleziono ciò che desidero nella combo e poi premo il bottone e.. meraviglia invece di entrare nell'evento botton_click entra nel maledetto evento SelectedIndexChanged e poi entra nell'evento bottom_click.
Perchè faccia questo non riesco ancora a spiegarmelo.
Invece senza bottone non funziona!
Solo che non mi piace molto come scelta, volevo farlo senza cliccare sul bottone.
Adesso provo un pò e poi se ti interessa metto la mia soluzione o ti espongo i miei aggiuntivi (spero di no) problemi!
Ah anche nel caricamento penso che sia meglio riempire le combobox usando il metodo Add, invece di passare attraverso un arraylist e fare poi undatasource e un databind,mi sembra che funzioni meglio.

Giulz Profilo | Newbie

posta pure..si dice cosi(?), cmq si meglio fare direttamente le Add qualche_valore mentre si cicla nel DataReader, io almeno faccio cosi, e poi chiudo il Dr, ma il mistero resta mi pare...

jessy Profilo | Newbie

Ho trovato un errore!
Mettevo le combo dentro un panel e non avevo settato la proprietà EnableView a true!
Ora l'ho fatto ma il problema del bottone resta!
Proviamo ancora un pò!!
Chi la dura la vince!(SPERO!!)

jessy Profilo | Newbie

OK! grazie.
Ora va meglio l'unica cosa che non riesco a capire è perchè non entra subito dentro l'evento SelectedIndexChanged ma ho dovuto aggiungere un bottone.
Quando ho selezionato e clicco il bottone entra nell'eventeo SIC e poi nella sub bottom_click.
il resto è ok.

jessy Profilo | Newbie

Nel page_load, semplicemente metto il caricamento delle combo, (prendo i dati dal DB).
Invece nell'evento SelectedIndexChanged prendo i valori selezionati e li metto nella session.
La proprietà AutopostBack l'ho messa a False.
Ho aggiunto anche un bottone.
Quindi ricapitolando:
seleziono un valore dalla combo, clicco il bottone, la procedura entra nella SIC, e poi entra nella sub BOTTON_click(dove io non faccio nulla).
Ho pensato di lasciarlo così, per lo meno funziona, anche se il dubbio mi rimane: perchè entra nella routine SIC solo quando clicco sul bottone?
Chissà.. grazie a tutti per l'aiuto.

jessy Profilo | Newbie

Grazie adesso funziona!
Nei vari tentativi che ho fatto ho provato a mettere AutoPostBack a true, però non riuscivo a mantenere il valore che selezionavo.
Mi manteneva il 1° valore che c'era nella combo ne selezionavo un'altro e mi restituiva come valore -1 quindi come se non l'avessi selezionato.
Sai il motivo?
Ah posso chiederti un'altra cosa?
Ho 2radiobutton racchiusi in un GroupName="RadioGroup1" e ho messo di default un RB checkato. voglio selezionare l'altro e vorrei entrare nell'evento RadioButton1_CheckedChanged. Tanto per cambiare non entra.
Devo sempre settare AutoPostBack a true e poi?Che altri errori posso aver fatto?
Grazie ancora

jessy Profilo | Newbie

Ok!
Grazie!
ciao
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