Problema con selezione combobox

sabato 26 settembre 2009 - 14.44

Mau67 Profilo | Expert

Ciao al forum, ho un altro problemino che non riesco a risolvere da alcuni giorni, praticamente nel mio progetto visual studio 2008 con tabelle access quando seleziono un amministrato dal combobox non filtra i dati nella listview.

Posto il codice che uso magari qualche occio esperto mi riesce a correggere l'eventuale errore:

'Qui popolo il combobox

Private Sub Amministrato1()

Dim objCmd As New OleDbCommand("SELECT ID, Cognome + ' ' + Nome + ' - ' + CodiceFiscale As MiaColonna FROM Anagrafica", Connection)

Dim dt As New DataTable("Anagrafica")

Dim objDa As New OleDbDataAdapter(objCmd)

objDa.Fill(dt)

ComboBox1.DisplayMember = "MiaColonna"
ComboBox1.ValueMember = "ID"


If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then
ComboBox1.DataSource = dt
End If

objDa.Dispose()
objCmd.Dispose()
Connection.Close()
Connection.Dispose()
End Sub

' Qui carico la listview con i dati filtrati dalla combobox

Private Sub Lista()

Try

ListView1.AllowColumnReorder = True
pb.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Resources\administrator_128.gif")
Connection.Open()

Dim Sql As String = "SELECT Dal, Al, IDReparto FROM Servizi WHERE IDAnagrafica = '" & ComboBox1.SelectedValue & "' order by Dal"
ListView1.Items.Clear()
Dim thisCommand As New OleDbCommand(Sql, Connection)
Dim dr As OleDbDataReader = thisCommand.ExecuteReader
Dim i As Integer = 0
While dr.Read()
ListView1.Items.Add(dr("Dal"))
ListView1.Items(i).SubItems.Add(dr("Al"))
ListView1.Items(i).SubItems.Add(dr("IDReparto"))
i += 1
End While
i = 0

Catch ex As Exception
pb.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "Resources\administrator_128.gif")
'MsgBox(ex.Message)

End Try
Connection.Close()
End Sub

' Qui cambio la selezione dell'index

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Lista()
End Sub

Praticamente la listview non carica i dati dove sbaglio?

Grazie in anticipa tutti
Mau67

AntCiar Profilo | Expert

Ciao.

Guardando il tuo codice non vedo errori di struttura o concetturali. L'unica cosa su cui mi viene da pensare è il parametro di filtro nella stringa che usi per caricare la lista. dopo il WHERE utilizzi IdUtente = 'x'. Il parametro lo passi tra apicetti. Ma il campo in questione a DB e' di tipo stringa? nel caso in cui sia di tipo numerico NON devi usare gli apicetti ma passare direttamente il valore: IdUtente = x

Devi fare anche una ulteriore cosa. Dichiara una variabile di istanza di tipo booleano che metti a True in testa al metodo che carica la combo e poi la passi a false alla fine del metodo. Poi nell'evento sulla combo richiama la funzione di caricamento della lista solo se la variabile è falsa. Devi fare questo perchè la combobox quando riceve il datasource scatena l'envento di selezione su ogni record passandogli come valore un datarowview (questo succede in VS 2005. Non so se nel 2008 l'hanno risolto)

Spero sia questo il problema
ciao

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