DropDownList + SelectIndexChange

lunedì 02 gennaio 2006 - 19.05

vincenzo79 Profilo | Newbie

Salve ragazzi,
è la prima volta che scrivo.
Avrei bisogno di un piccolo aiuto.
Ho una pagina ASPX che incapusala al suo interno un parte Header, una Barra Navigazione, un menu, una parte footer e un corpo composto da un Web USer Control.
All'interno di questo webusercontrol, ho inserito una DropDownList che viene popolata con una query da un database SQL.
Ho inserito all'interno del Tag <ASP:DropDownList> i parametri AutoPostBack = true e anche l'evento OnSelectChangeIndex = "changeSelectedIndex".

Il problema è che quando seleziono il valore l'evento viene scatenato, ma purtroppo quando cerco di andarmi a prendere il valore mi restituisce sempre -1.

Sapete indicarmi qualche link dove posso risolvere questo problema?
Grazie Vincenzo

PEPE Profilo | Senior Member

ciao,
quando vai a leggere il valore della dorpdownlist lo fai dallo usercontrol o dalla pagina "padre"?

vincenzo79 Profilo | Newbie

Lo leggo dal webUsercontrol, perchè vorrei a seconda dell'indice scelto dalla DDL popolare un DATAGRID.
Vincenzo

PEPE Profilo | Senior Member

allora guarda...dovrebbe funzionare tutto bene. Ora ti posto un po di codice cosi' puoi verificare se magari c'e' qualche incongruenza.

parte aspx.

<asp:dropdownlist id="drp1" runat=server autopostback=true></asp:dropdownlist>

parte vb net.

private sub drp1_selectedindexchaged(byval obj as object, byval e as eventargs) handles drp1.selectedindexchanged
...
qui metti il tuo codice ad esempio---> label.text=drp1.selectedvalue
nel tuo caso popoli il datagrid
...
end sub

Ciao,
Luca.

vincenzo79 Profilo | Newbie

Ho fatto quello che tu mi hai detto.
Il problema è che mi prende sempre e solo il valore 0.
Non riesco a capire perchè.
Vincenzo

PEPE Profilo | Senior Member

Ciao,
metti il tuo codice, se puoi che cerco di capire dove sta l'errore.

vincenzo79 Profilo | Newbie

Ho inserito i file in allegato.
Vincenzo

PEPE Profilo | Senior Member

Ciao,
Purtroppo le pagine non me le apre :P.

prova a fare un file zip o rar e riallegare.

Ciao,
Luca.

vincenzo79 Profilo | Newbie

Come richiesto.
Ti aviso che sono fatte in C#
Vincenzo

PEPE Profilo | Senior Member

Allora a me funge :D

Ecco qua quello che ho fatto

Parte aspx

<asp:DropDownList Runat="server" ID="drp1" AutoPostBack="True" OnSelectedIndexChanged="drp1Selection_Change">
<asp:ListItem Value="0"></asp:ListItem>
<asp:ListItem Value="1">Valore numero 1</asp:ListItem>
<asp:ListItem Value="2">Valore numero 2</asp:ListItem>
<asp:ListItem Value="3">Valore numero 3</asp:ListItem>
<asp:ListItem Value="4">Valore numero 4</asp:ListItem>
<asp:ListItem Value="5">Valore numero 5</asp:ListItem>
</asp:DropDownList>
<br>
<br>
<asp:Label ID="lblMessage" Runat="server"></asp:Label>


Parte c#

public void drp1Selection_Change(object sender, EventArgs e)
{
lblMessage.Text= drp1.SelectedItem.Value;
}

Ciao,
Luca.


vincenzo79 Profilo | Newbie

Lo funziona anche a me, con la popolazione della combo in modo statico.
Il mio problema è che la mia combo viene popolata in modo dinamico prendendo i dati da SQL SERVER.


PEPE Profilo | Senior Member

Ciao ecco a te.

Pagina aspx

<form id="Form1" method="post" runat="server">
<asp:DropDownList Runat="server" ID="drp1" AutoPostBack="True" OnSelectedIndexChanged="drp1Selection_Change">
<asp:ListItem Value="0"></asp:ListItem>

</asp:DropDownList>
<br>
<br>
<asp:Label ID="lblMessage" Runat="server"></asp:Label>
</form>

pagina cs

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if (!Page.IsPostBack)
{
Popola_Drop1();
}

}

private void Popola_Drop1()
{
strConnection= "APPLICATION NAME=PROVA; DATA SOURCE=MICHELANGELO; DATABASE=pubs; USER ID=prova; PASSWORD=prova";
string sqlQuery;
sqlQuery = "SELECT * FROM authors";
SqlConnection objConn = new SqlConnection(strConnection);
SqlDataAdapter objCommand = new SqlDataAdapter(sqlQuery, objConn);
DataTable objTable = new DataTable();
objCommand.Fill(objTable);
objConn.Dispose();
drp1.DataSource= objTable;
drp1.DataValueField= "au_id";
drp1.DataTextField= "au_lname";
drp1.DataBind();
}


public void drp1Selection_Change(object sender, EventArgs e)
{
lblMessage.Text= drp1.SelectedItem.Value;
}

Ciao,
Luca.

vincenzo79 Profilo | Newbie

Fatto ma purtroppo quando va a prendersi il valore mi restituisce sempre il primo valore.
La cosa strana che ho notato è che dopo aver selezionato la voce, la combo mi compare vuota.
Vincenzo

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