Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [vb.net] Selezionare un valore della DropDownList

    Ciao a tutti.
    Mi sembra una cretinata, ma sto uscendo pazzo.

    Ho una DropDownList popolata da db.
    codice:
    Public Sub ddlStato_Load() stringacn.StringaConnessione() 
    Dim cntxt As String = stringacn.getcn 
    Dim cn As New MySqlConnection(cntxt) 
    Dim cm As New MySqlCommand("SELECT * FROM stati", cn) 
    Try 
    cm.Connection.Open() 
    Dim ddlValues As MySqlDataReader 
    ddlValues = cm.ExecuteReader() 
    ddlStato.DataSource = ddlValues 
    ddlStato.DataValueField = "nome"
    ddlStato.DataTextField = "nome" 
    ddlStato.DataBind() 
    Catch ex As Exception 
    Finally 
    If 
    cn.State = Data.ConnectionState.Open 
    Then 
    cm.Connection.Close() 
    cm.Connection.Dispose() 
    End If 
    End Try
    End Sub
    Fin qui tutto ok. l'elenco si vede.

    Ora voglio che, alla selezione di un item della DropDL e al successivo click su un button, questo venga memorizzato su db.
    Ho fatto così, ma non funziona:
    codice:
    Protected Sub bttSalva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bttsegnala.Click stringacn.StringaConnessione() 
    Dim cntxt As String = stringacn.getcn 
    Dim cn As New MySqlConnection(cntxt) 
    Dim cm As New MySqlCommand("UPDATE tabella1 SET stato=?stato WHERE ( ids = ?ids )", cn) 
    Dim mydata As New DataTable Try 
    cn.Open() 
    cm.Parameters.AddWithValue("?stato", ddlStato.SelectedItem.Value ) cm.Parameters.AddWithValue("?ids", lblIDS.Text) 
    Dim myAdapter As New MySql.Data.MySqlClient.MySqlDataAdapter 
    myAdapter.SelectCommand = cm 
    myAdapter.Fill(mydata) 
    Catch ex As Exception
    MsgBox("Modifica non avvenuta") 
    Finally 
    If cn.State = Data.ConnectionState.Open 
    Then 
    cn.Close() 
    End If 
    End Try 
    End Sub
    ho provato a farmi stampare il ddlStato.SelectedItem.Value/Text ma mi restituisce sempre il primo valore delle lista.

    come si fa?
    Grazie
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    perdonami, ma il codice non si capisce...potresti 'formattarlo' meglio ?

    (per prima cosa comunque controlla che il caricamento della DropDown venga fatto soltanto se la pagina NON è in postback)

  3. #3
    Perdonami, ma come faccio a vedere se il caricamento della DropDown venga fatto soltanto se la pagina non è in postback?

    Intanto indento meglio il codice.

    DropDownList popolata da db:
    codice:
    Public Sub ddlStato_Load() stringacn.StringaConnessione() 
       Dim cntxt As String = stringacn.getcn 
       Dim cn As New MySqlConnection(cntxt) 
       Dim cm As New MySqlCommand("SELECT * FROM stati", cn) 
     
       Try 
            cm.Connection.Open() 
            Dim ddlValues As MySqlDataReader 
            ddlValues = cm.ExecuteReader() 
    
            ddlStato.DataSource = ddlValues 
            ddlStato.DataValueField = "nome"
            ddlStato.DataTextField = "nome" 
            ddlStato.DataBind() 
    
        Catch ex As Exception 
        Finally 
           If cn.State = Data.ConnectionState.Open Then 
              cm.Connection.Close() 
              cm.Connection.Dispose() 
           End If 
       End Try
    End Sub
    Al click del button, dopo aver selezionato il nuovo item dalla dropDL, devo salvare il nuovo item nel db.
    codice:
    Protected Sub bttSalva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bttsegnala.Click stringacn.StringaConnessione() 
       Dim cntxt As String = stringacn.getcn 
       Dim cn As New MySqlConnection(cntxt) 
       Dim cm As New MySqlCommand("UPDATE tabella1 SET stato=?stato WHERE ( ids = ?ids )", cn) 
       Dim mydata As New DataTable 
    
       Try 
            cn.Open() 
            cm.Parameters.AddWithValue("?stato", ddlStato.SelectedItem.Value)
            cm.Parameters.AddWithValue("?ids", lblIDS.Text) 
            
            Dim myAdapter As New MySql.Data.MySqlClient.MySqlDataAdapter 
            myAdapter.SelectCommand = cm 
            myAdapter.Fill(mydata) 
    
       Catch ex As Exception
            MsgBox("Modifica non avvenuta") 
       Finally 
            If cn.State = Data.ConnectionState.Open Then 
               cn.Close() 
            End If 
        End Try 
    End Sub
    ddlStato.SelectedItem.Value non mi prende quello selezionato, ma solo il primo della lista.

    Grazie
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    intendo questo:

    Nel Page_Load:
    codice:
    If Not IspostBack then
       ddlStato_Load()
       ...
    End if
    ...altrimenti dopo la selezione di un item, alla pressione di un pulsante qualsiasi, riesegue il page load e ricarica la DropDown facendoti perdere l'elemento selezionato...


    poi non mi convince molto il metodo usato per fare una UPDATE. Mi sa che non è quello che hai usato...

  5. #5

  6. #6
    Grazie mille per il tuo suggerimento.

    Era proprio la IspostBack a mancare!

    Invece per quanto riguarda la UpdateCommand, non mi funziona.
    Se invece lascio SelectCommand mi salva il cambiamento su db.
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.