12 messaggi dal 19 giugno 2006
buonasera a tutti... sto usando visual studio e vb.net e ho il seguente problema con una dropdownlist di nome comboannoaccademico che popolo con la seguente funzione da me creata:

Public Function popolaCombo(ByVal oggetto As DropDownList, ByVal proc As String) As String
    Dim strConnectionString As String = "..."
    'apro il data adapter
    Dim dataSet As DataSet = New DataSet
    Dim conn As New SqlClient.SqlConnection(strConnectionString)
    Dim adapter As New SqlClient.SqlDataAdapter
    Dim procedura As New SqlClient.SqlCommand(proc, conn)
    procedura.CommandType = CommandType.StoredProcedure
    adapter.SelectCommand = procedura
    adapter.Fill(dataSet)
    'inserisco le righe contenute nel dataset nel combo oggetto
    Dim thisTable As DataTable
    Dim li As ListItem
    For Each thisTable In dataSet.Tables
      ' For each row, print the values of each column.
      Dim myRow As DataRow
      For Each myRow In thisTable.Rows
        Dim myCol As DataColumn
        For Each myCol In thisTable.Columns
          li = New ListItem
          li.Text = myRow(myCol).ToString
          li.Selected = False
          oggetto.Items.Add(li)
        Next myCol
      Next myRow
    Next thisTable
  End Function


richiamata nel seguente modo:

.popolaCombo(ComboAnnoAccademico, "select_all_annoacc")

dove select_all_annoacc è la stored procedure che seleziona i dati. i dati nella dropdownlist sono visualizzati correttamente.
di default, deve essere visualizzato l'anno accademico attuale, quindi:

ComboAnnoAccademico.SelectedValue = "05/06"

e anche qui tutto ok, visualizza correttamente il valore che gli passo.
il problema sta nel recupero del valore selezionato. ho impostato la proprietà autopostback a true e, la routine di gestione del combo è la seguente

Private Sub ComboAnnoAccademico_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboAnnoAccademico.SelectedIndexChanged
    Response.Redirect("ElencoProgetti.aspx?anno=" & ComboAnnoAccademico.SelectedItem.Text)
  End Sub


quando carico la pagina, l'indirizzo è

.../ElencoProgetti.aspx

e, qualsiasi valore clicco nella dropdownlist, ho sempre selezionato il valore "05/06"

/ElencoProgetti.aspx?anno=05/06

perché nella query string ho sempre lo stesso valore?? ho provato a metterlo in sessione, a metterlo in una label nascosta ma il valore selezionato è sempre 05/06. perché?
Controlli il PostBack??

Per le drop down list hai la proprietò Datasource, non è necessario che ti cicli la fonte dati ed aggiungi riga riga al componente.
In più se puoi non usare i Dataset / DataTable, vai di collection e datareader diretto per bindare.

byez
Modificato da imperugo il 28 agosto 2006 13.33 -

imperugo
Microsoft MVP
myblog : http://www.tostring.it
126 messaggi dal 04 aprile 2005
Come dice imperugo, devi controllare la proprietà IsPostBack della pagina. Questa restituisce true se la pagina viene caricata in risposta al postback di un client false se è al primo caricamento. Tu vuoi impostare "05/06" come valore di default al primo caricamento, per poi mantenere il valore impostato dal client. Per cui:

If Not IsPostBack Then
    ComboAnnoAccademico.SelectedValue = "05/06"
End If


Cmq anche a me sembra che ti sei un po' incasinato la vita... se passi il risultato della sp al datasource della dropdownlist e fai il databind ottieni lo stesso risultato in 2 righe di codice!!

Ciao

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.