Ricavare Numero Riga da un DataBlindingSource collegato ad una ComboBo...

martedì 08 luglio 2008 - 19.11

kopiro91 Profilo | Newbie

in poche parole, ho una combobox, associato ad una database con due colonne (user,pass), ora io vorrei che quando l'utente seleziona dalla combobox la scelta, un controllo mi ricavi il numero della riga nel database.

Grazie in anticipo.

Enne Profilo | Junior Member

Ciao,
Scusami ma non ho capito molto bene quello che vuoi fare. Se gentilmente puoi spiegarti meglio..
"...quando l'utente seleziona dalla combobox la scelta.." quale scelta? e cosa precisamente vuoi ricavare dal database?

Rocco Verrastro
.NET Programmer - Web Developer

alexmed Profilo | Guru

Ciao

Sei sicuro di voler ottenere il numero di riga?
Oppure selezioni user e vuoi sapere la pass associata?

Nel secondo caso utilizza "ComboBox1.SelectedValue" e "ComboBox1.ValueMember"


Ciao.

Enne Profilo | Junior Member

No alex, nel suo caso dovrebbe usare un SelectedItem o un SelectedIndex in un evento SelectedIndexChanged

Rocco Verrastro
.NET Programmer - Web Developer

alexmed Profilo | Guru

Ciao Enne
Non sono pienamente d'accordo con la tua soluzione:

1. Se usi "SelectedIndex" ti restituisce l'indice (in base zero) dell'elenco che hai caricato. E se hai filtrato i dati? Ad esempio solo gli User che hanno dei privilegi.
Non ti restituirebbe il numero della riga del DB
Ad ogni modo dovresti aggiungere 1 (base zero)

2. A me (VisualBasic 2005 Express) in caso di DB associato ad una Combo "SelectedItem" mi dà errore.

danielmaz Profilo | Newbie

Alex la soluzione di Enne è giusta invece, restituendo l'index potrebbe facilmente ricavare i dati in base all'id della riga nella tabella. Con SelectedItem invece potrebbe ricercare nel database il valore selezionato nella combo e restituire esempio la pass.
sinceramente nn ci capisco molto di VB ma in C# SelectedItem x qsti scopi mi ha sempre funzionato divinamente, forse non sai farlo funzionare tu in VB scherzo

alexmed Profilo | Guru

Ciao danielmaz,
Che io non sappia far funzionare VB non è un ipotesi essendo autodidatta, è possibile che qualche cosa mi sfugga, ed è anche per questo motivo che vengo sempre in questo form (oltre naturalmente a qlq buon libro).

Però se io ho:

ID | NAME | ADMIN

1 | PIPPO | True
2 | PLUTO | False
3 | TOPOLINO | True
4 | PAPERINO | False
5 | PAPERONE | True

Se carico i dati su una Combo filtrando solo gli ADMIN (WHERE ADMIN = TRUE)

Avrei

0 | PIPPO | True
1 | TOPOLINO | True
2 | PAPERONE | True

Giusto?

Quindi se seleziono dalla Combo TOPOLINO la "SelectedIndex" ti restituisce "1". Ma in realtà nella Tabella del DB TOPOLINO corrisponde al Record "3"

Invece con SelectItem se seleziono TOPOLINO mi verrà restituito TOPOLINO. A questo punto dovrei eseguire una nuova query per sapere la PASS associata. Giusto?

Da quanto ho appreso finora se un controllo ha associato un BindingSource con le proprietà ValueMember e SelectedValue riesco a recuperare immediatamente i dati.

http://msdn.microsoft.com/it-it/library/system.windows.forms.listcontrol.valuemember(en-us,VS.85).aspx


Poi è possibile che non abbia capito la richiesta di kopiro91 ( ...mi ricavi il numero della riga nel database)

Ciao


kopiro91 Profilo | Newbie

allora scusate se rispondo tardi ma non sapevo che foste cosi tempestivi su questo forum XD
cmq io in parole semplici devo fare un form di login. con i dati associati alla mia tabella.
gli username sono visibili in quanto essendo combobox me li fa vedere, la password nascosta.

quindi io ho impostato il database cosi:
ID(primaryKey) - Username - Password
1 prova provapass
2 ciao ciaopass

quindi nella combobox mi fa vedere i dati della colonna Username.
quando l'utrente clicca su OK, deve controllare che la password associata sia la stessa scritta nella colonna 'Password', alla riga X (Ricavata dallo username)

alexmed Profilo | Guru

Io la vedo così (vedi allegato)

Ciao

kopiro91 Profilo | Newbie

ok ora vedo
visto.

scusa ma in questo modo mi restituisce il valore selezionato, ma della colonna user.
a me serve il valore della colonna passowrd!

alexmed Profilo | Guru

Il valore della colonna password te lo restituisce proprio il "ComboBox1.SelectedValue.ToString()"

Tantè che quando cambi il nome nella Combo nel Label1 (che dovrai cancellare) trovi la password che se noti è si = al nome_utente ma ha la lettera iniziale minuscola.

Prova a cambiare i valori nel DB della PSW


kopiro91 Profilo | Newbie

scusa ma io non ho installato SQL, quindi faccio con access i database e non riesco ad aprire il tuo database.
Ma combobox1 e associato alla colonna user giusto=?

quindi conme fai a restituire il valore di un'altra colonna?

EDIT:

ah scusa ho capito come fai! ho visto ora la combobox1... gia non ci avevo pensato..

DiplayMember-> User
SelectedValue.> Pass!

Geniale, Grazie!

alexmed Profilo | Guru

Esatto!
La caratteristica di SelectValue è proprio questa vedi la colonna 1 e memorizzo anche il valore della colonna 2.

Non ho provato con un DB Acces ma non credo vi siano problemi.

Ti rimando a questo articolo per approfondimenti:
http://msdn.microsoft.com/it-it/library/system.windows.forms.listcontrol.valuemember.aspx

Ciao

un'altra cosina
Se si tratta di un applicativo "base" credo che come protezione vada bene; se invece hai bisogno di maggior sicurezza cerca qls di più complesso magari che prenda in considerazione la crittografia della psw.


kopiro91 Profilo | Newbie

è un applicativo che registra il tempo di un utente in una postazione internet (in un negozio)..
ma siccome vengono parecchie persone gli do anche la possibilità di registrarsi.
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