319 messaggi dal 05 agosto 2005
Ciao Ragazzi,
In una webform ho un bottone e un Detailsview agganciato a un codice boud nel codebehind.
All'interno di questa ho piazzato una DDL e l'ho riempita in questo modo (sub ovviamente richimata dal Protected Sub dv_details_1_DataBound):


Sub fill_DDL()

Dim lb_size As Label = TryCast(dv_details_1.FindControl("lb_size"), Label)
Dim ddl_size As DropDownList = TryCast(dv_details_1.FindControl("ddl_size"), DropDownList)

lb_size.Visible = False

Using myConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("test123").ConnectionString)
Const SQL As String = "SELECT distinct ImageSize.imgSize, ImageSize.imgnxsize FROM ImagePreview INNER JOIN ImageSize ON ImagePreview.imgCode = ImageSize.imgCode WHERE (ImagePreview.imgVisible = 1) AND (ImagePreview.imgCode = @imgCode) ORDER BY ImageSize.imgSize"

Dim myCommand As New SqlCommand(SQL, myConnection)

myCommand.Parameters.AddWithValue("@imgCode", Request.QueryString("imgCode").ToString)

Try

myConnection.Open()

Dim myReader As SqlDataReader = myCommand.ExecuteReader

Do While myReader.Read()

Dim NewItem As New ListItem
NewItem.Text = myReader("imgSize")
NewItem.Value = myReader("imgnxsize")

If NewItem.Value = "0" Then
NewItem.Text = myReader("imgSize") + " - Sold out"
End If

ddl_size.Items.Add(NewItem)

Loop

myReader.Close()
myConnection.Close()


Catch ex As Exception
Response.Redirect("~/Default2.aspx")
End Try

End Using


End Sub

----------------------------------------------------

Adesso, selezionato un item dalla DDL, al click del botton dovrei intercettare il SelectedItem.Text. Il mio problema invece è che mi viene selezionato il primo item della lista che non abbia questa condizione: NewItem.Value = "0" .

La DDL è fattoa così:

<asp:DropDownList ID="ddl_size" runat="server" AppendDataBoundItems="True" >
</asp:DropDownList>.

Avete un'idea del perchè non riesca a selezionare il corretto SelectedItem.Text?

Grazie

Marco
Sei certo di non rientrare nella procedura fill_DDL() anche in postback ?

Se è così ti verrà sempre restituito il primo valore.

Fabrizio Canevali
319 messaggi dal 05 agosto 2005
Ciao Fabrizio,

Ho piazzato un break point alla chiamata della Sub Fill_DLL ma ci passo solo alla chiamata della Protected Sub dv_details_1_DataBound.
Ho anche inserito un

If Not Page.IsPostBack Then
fill_DDL()
end if

all'interno della Protected Sub dv_details_1_DataBound, ma il risultato non cambia. Oltretutto, se passassi 2 volte o più dalla fill_DDL, mi aspetterei di vedere come primo item selezionato: Select size essendo la mia DDL fatta così:

<asp:DropDownList ID="ddl_size" runat="server" AppendDataBoundItems="True" >
<asp:ListItem>Select size</asp:ListItem>
</asp:DropDownList>

Invece mi viene selezionato il primo item della lista che non abbia questa condizione: NewItem.Value = "0"
Ciao, purtoppo non posso replicare il codice ... che sembra corretto.
Ti conviene fare un pò di debug e controllare la sorgente dati.

Fabrizio Canevali
319 messaggi dal 05 agosto 2005
Ho torovato.

Il problema è appunto sulla DDL. Penso sia un baco di Microsoft.

Ho cambiato il codice in maniera tale che NewItem.Value fosse sempre diverso per ogni item della mia DDL, in questo modo:

Do While myReader.Read()

Dim NewItem As New ListItem
NewItem.Text = myReader("imgSize")
NewItem.Value = myReader("imgSize") + CStr(myReader("imgnxsize"))

_size = myReader("imgnxsize")


If _size = "0" Then
NewItem.Text = myReader("imgSize") + " - Sold out"
End If

ddl_size.Items.Add(NewItem)

Loop



e adesso, al click e nel postback del bottone il SelectedItem.Text risulta corretto.
beh che dire un pò (m)bizzarro

Fabrizio Canevali
bhe no non è affatto bizzarro ne è un baco, se ogni item ha il solito Value è impossibile per asp.net ma anche per un essere umano scegliere tra


<asp:ListItem>Ciao</asp:ListItem>
<asp:ListItem>Ciao</asp:ListItem>
<asp:ListItem>Ciao</asp:ListItem>
<asp:ListItem>Ciao</asp:ListItem>


ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
319 messaggi dal 05 agosto 2005
Ciao Marco, il problema è ben più grave:

la mia DDL è composta così:

<asp:ListItem>Ciao</asp:ListItem>
<asp:ListItem>Domani</asp:ListItem>
<asp:ListItem>Stasera</asp:ListItem>
<asp:ListItem>Domenica</asp:ListItem>

e, ad ogni item è agganciato un Text diverso, mentre il Value pùo essere uguale

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.