Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Problema con il DropDownList
venerdì 05 settembre 2008 - 17.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
ven 5 set 2008 - 17:57
Un saluto a tutta la comunità.
Ho realizzato una web form per raccogliere dei dati di alcuni utenti.
Per la creazione della pagina ho usato un update panel con dentro diversi textbox e un drop down list contenete diversi campi da selezionare. In fondo alla pagina ho messo un button che una volta cliccato innesca tutta una serie di processi che vanno a leggere i valori delle textbox e del campo del drop down list selezionato.
Il problema è questo: Indipendentemente dal valore che seleziono il valore letto sul drop downl list è sempre il primo della lista.
per leggere il valore uso la proprietà selectedItem, ma niente da fare. il valore letto è sempre il primo
ES: dim Indirizzo as string=Me.dropdownlist.selectedItem.text
Qualcuno di voi può darmi un consiglio?
Grazie in anticipo per qualsiasi suggerimento.
balfaz
Profilo
| Expert
726
messaggi | Data Invio:
ven 5 set 2008 - 20:26
inviami un po di codice perchè non ti ho capito molto bene, magari ti posso dare una mano
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
lun 8 set 2008 - 09:23
Ecco qua un pezzo di codice. Spero possa essere chiaro
Codice Html della pagina:
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<div id="dvDDL">
<asp:Label ID="Scritta1" runat="server" CssClass="lblScritta1" /><br />
<asp:Label ID="Scritta2" runat="server" CssClass="lblScritta2" />
<asp:DropDownList id="mioDDL" runat="server">
</asp:DropDownList
</div>
<div id="dvDatiCliente">
<asp:Label ID="lblTitNomeCliente" runat="server" CssClass="lblTitNomeCli /><br />
<asp:TextBox ID="txtNomeCli" MaxLength="30" runat="server" CssClass="txtNomeCLi" /><br />
</div>
ALTRI OGGETTI DELLA PAGINA (TUTTI TEXTBOX E LABEL)
<div id="dvPulsante">
<asp:Button ID="btnConferma" runat="server" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
CODICE VB.NET DELLA PAGINA
Protected Sub btnConferma_Click(.......)
DIM NomeCli as string=Me.=txtNomeCli.text
dim valoreDDL=Me.mioDDL.SelectedItem.Text
Più altro codice per leggere tutti gli altri textbox
End Sub
balfaz
Profilo
| Expert
726
messaggi | Data Invio:
lun 8 set 2008 - 10:24
tu usi l'evento load della pagina?,
se fosse SI allora
controlla l'evento postback della pagina e usa "if NOT page.ispostback",
Altrimenti
controlla la procedura dove fai la carica dei dati nel DDL
altrimenti
fammi sapere
FinSI
sembra un algoritmo ma non era la mia intenzione (questa sporca abitudine)
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
lun 8 set 2008 - 11:06
Si sfrutto l'evento load della pagina per caricare i dati nel dropdownlist
Il consiglio che mi hai dato è sicuramente valido. Infatti senza controllare l'evento postaback una volta che si clicca il pulsante vengono riassociati tutti i dati al drop down list e di consegenza viene persa la selezione.
Quindi Ho provato a fare come mi hai detto ma ci sono ancora problemi :Quando vado a prendere il valore selezioanto è sempre nullo.
ti posto il codice che ho scritto:
Nel page Load ho inserito queste istruzioni:
If Not Page.IsPostBack Then
Me.mioDDL.DataSource = LeggiValori()
Me.mioDDL.DataBind()
End if
LeggiValori è una funzione che mi ritorna un arraylist correttamente popolato con i valori da associare. Ho controllato la funzione in debug più volte e funziona correttamente.
balfaz
Profilo
| Expert
726
messaggi | Data Invio:
lun 8 set 2008 - 11:45
mi faresti la cortesia di postare un po di codice, un po più dettagliato, cosi posso fare due prove per riuscire ad aiutarti
comunque puoi fare un'altra prova, inserisce la riga
dim DDLX as dropdownlist = ctype(Upl.findcontrol("TUO_DDL"), dropdownlist)
dopodichè fai il cast al controllo appena creato "DDLX.selecteditem.text "
vediamo un pò,
comunque ricorda la mia richiesta. Ciao
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
lun 8 set 2008 - 14:56
Ho provato a fare anche questa prova ma niente.
Per fare un ulteriore test ho creato un altro progetto con visual studio e scriveNDO le istruzioni precedenti funziona tutto perfettamente.
Questo è il progetto di prova che ho fatto:
CODICE HTML
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
CODICE VBNET
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Me.DropDownList1.SelectedValue)
End Sub
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
Dim listini As ArrayList = New ArrayList
listini.Add("001")
listini.Add("002")
listini.Add("003")
Me.DropDownList1.DataSource = listini
Me.DropDownList1.DataBind()
End Sub
End Class
A questo punto mi chiedo se ci sia qualche impostazione a livello di pagina o sul web.config SUL MIO PROGETTO che possa in qualche modo interferire con gli eventi o con l'oggetto. Ti viene pensato niente?
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
lun 8 set 2008 - 15:14
Ho risolto il problema!!!
Sulla pagina aspx dove ho il dropdownlist ho inserito sul campo page l'attributo EnabledViewState="true" Di seguito riporto un esempio:
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Default2.aspx.vb" Inherits="Default2" EnableViewState="true"%>
La cosa è risolta però mi sfugge ancora il perchè senza questo attributo il dropdownlist non funziona correttamente, visto che sul progetto di prova che avevo fatto comunque, senza inserire l'attributo tutto funzionava perfettamente.
Se sai il motivo fammi sapere, sennò non ti preoccupare che tanto il problema è risolto.
Grazie ancora per la disponibilità
Ondatem
Profilo
| Newbie
31
messaggi | Data Invio:
lun 8 set 2008 - 15:19
Bisognava inserire l'attributo enabledviewstate=true perchè sul web.config era settato uguale a false.
A questo punto o si corregge il web.config o si inserisce l'attributo a livello di pagina.
Un saluto a tutta la comunitaà
Torna su
Stanze Forum
Elenco Threads
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 !