DropDownList Evento SelectedIndexChanged restituire colonna tabella

mercoledì 06 maggio 2009 - 23.50

venzo Profilo | Junior Member

Ho un DropDownList, che ho caricato con una tabella di cinque campi. Chiaramente ho valorizzato sia DataValueField che DataTextField.
Però all'evento SelectedIndexChanged, ho bisogno di ricavare ulteriori campi della tabella collegata.
Ho visto da qualche parte la possibilità di usare e.item.cell(2).
E' possibile ricavare i dati della riga di tutto il SelectedIndex evidenziato ?

Grazie infinite.

paoval72 Profilo | Senior Member

Ciao. La dropdownlist è un controllo formato da una coppia chiave-valore: quindi dal selectedindexchanged potrai solo ricavare uno dei due (text o value).
Però, puoi usarli per fare una ulteriore select sui tuoi dati. Che tabella è o come la ricavi?

PV

venzo Profilo | Junior Member

Si ci avevo pensato. Mi chiedevo quanto sopra, solo per evitare una nuova select, che comunque ruba tempo.
Non credi ?

paoval72 Profilo | Senior Member

Sinceramente al momento non mi vengono in mente altre proposte, visto soprattutto il controllo dropdownlist. Ti chiedevo della tabella che fa da source per capire se eventualmente fare la select non su db, ma da dati salvati in sessione. Però sempre select è!
PV

mrub Profilo | Junior Member

L'approccio della programmazione sul web è:

elabora solo i dati strettamente indispensabili. E' molto più pesante visualizzare 5 campi per ogni record della ddl piuttosto che ricavare i campi del singolo record corrispondente alla chiave selezionata nella ddl.

cmq puoi risolvere il problema in modo relativamente efficiente utilizzando il metodo executescalar per ricavro il dato:
Di seguito 2 esempi:

onselectindexchanged...

estraicampo1(miaconn,"Tabella","nome campo corrispondente al valore selezionato", "nome campo da restituire", valore selezionato nella ddl)
oppure
estraicampo2(miaconn,"Tabella", "nome campo da restituire", "[campo chiave] = " & valore selezionato nella ddl)


Public Function estraicampo1(ByVal a_dbconn As OleDbConnection, ByVal a_tab As String, ByVal a_campoID As String, ByVal a_campo As String, ByVal a_id As Integer, Optional ByVal a_whe As String = "")
Dim miowhe As String
Try
a_dbconn.Open()
Dim miasql, estraicampotemp As String
If a_whe = "" Then
miowhe = a_campoID & "=" & a_id
Else
miowhe = "(" & a_campoID & "=" & a_id & ") AND (" & a_whe & ")"
End If
miasql = "SELECT " & a_campo & " FROM " & a_tab & " WHERE (" & miowhe & ");"
'Response.Write(miasql)
Dim miocomando As New OleDbCommand(miasql, a_dbconn)
estraicampotemp = CType(miocomando.ExecuteScalar(), String)
a_dbconn.Close()
Return estraicampotemp
Catch exc As Exception
'Response.Write("Si è verificato un errore" & exc.Message & exc.Source)
a_dbconn.Close()
End Try
End Function

Public Function estraicampo2(ByVal a_dbconn As OleDbConnection, ByVal a_tab As String, ByVal a_campo As String, ByVal a_whe As String)
Try
a_dbconn.Open()
Dim miasql, estraicampotemp As String
'miowhe = "(" & a_campoID & "=" & a_id & ") AND (" & a_whe & ")"
miasql = "SELECT " & a_campo & " FROM " & a_tab & " WHERE (" & a_whe & ");"
'Response.Write(miasql)
Dim miocomando As New OleDbCommand(miasql, a_dbconn)
estraicampotemp = CType(miocomando.ExecuteScalar(), String)
a_dbconn.Close()
Return estraicampotemp
Catch exc As Exception
'Response.Write("Si è verificato un errore" & exc.Message & exc.Source)
a_dbconn.Close()
End Try
End Function
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5