Associare dati a combobox senza dataset

martedì 22 luglio 2008 - 17.30

TaiChi Profilo | Junior Member

ho una combobox alla quale vorrei associare dei dati senza però avere un
dataset.

Posso recuperare i dati così:

conn = new SQLiteConnection(connString);
try
{
conn.Open();
SQLiteCommand cmd = new SQLiteCommand(conn);
cmd.CommandText = "SELECT IDProclamatore, Nome || ' ' || Cognome AS Nominativo FROM Proclamatori";
cmd.ExecuteNonQuery();


quello che vorrei fare è visualizzare il campo Nominativo nella combobox
ma poter recuperare il campo IDProclamatore per le ricerche da fare.

Grazie.



Alessio Forconi

gabriel81 Profilo | Junior Member

In genere io riempio un datatable(se ti serve la funzione te la passo)
Gli imposto il DataSource = datatable
Poi imposti la proprietà DisplayMember ovvero la colonna da vedere
e ValueMember = colonna della chiave del db

TOPOAMORE Profilo | Expert

Ciaooo
allora inserisci e tre dati come hai postato all'interno del combobox ma con un separatore uno dall'altro
es. Nome || '-' || Cognome || '-' || IDProclamatore AS Nominativo

in questo modo il tuo separatore sara "-"

una volta selezionato la persona dalla combo con cui hai da fare delle operazioni vai a richiamare la tua funzione split che sara:

function Splittare(TestoDaSplittare as string) Dim VAL(2) As String ' 2 e = a 3 visto che lo 0 conta e tu hai solo 3 campi Dim S As String Dim ID As Integer Try S = TestoDaSplittare VAL = S.Split("-") ID = VAL(2) Return ID Catch EX As Exception MsgBox(EX.Message.ToString) End Try end function

e andrai a mettere il tuo id in una variabile cosi

dim ID as integer=splittare(me.combobox.text)

ciaoooo

TaiChi Profilo | Junior Member

Mi farebbe molto piacere,anche se vorrei usare non usare dataset me la tengo di riserva.

Grazie Gabriel


Alessio Forconi

TaiChi Profilo | Junior Member

Grazie topoamore, io però prima di recuperare il file ho necessità di capire come associare i dati alla combo, possibilmente senza usare dataset ma facendo l'associazione a mano.




Alessio Forconi

TOPOAMORE Profilo | Expert

con un Datareader va bene?

gabriel81 Profilo | Junior Member

Non per insistere, ma se mi dai qualche dettaglio in più ti posso aiutare meglio.
Mi spiego meglio: di norma i programmi che gestiscono i dati hanno sotto un database, credo che questo sia il tuo caso.
Credo che tu hai un tabella PROCLAMATORI, però il fatto che è la sorgente di una combobox mi fà pensare che in realtà il valore della combo andrà a popolare il record di un'altra tabella dove nel campo Proclamatore andrai ad inserire il suo ID e non il suo nominativo.
Questo per indicizzare le ricerche su questa tabella filtrando per ID_Proclamatore.
Ovviamente i Proclamatori non saranno sempre gli stessi, possono aumentare o diminure, ed è per questo che ti conviene attingere i dati da un db.
Le combo si popolano mediante una collectionstring solo quando hanno tipo 3/4 parametri che non cambieranno mai.
Ad esempio una combo contenente i giorni della settimana(Lunedi, Martedi....) la popoli a runtime, non da db, ma è pressochè impossibile che i giorni della settimana vengano variati.
Se mi posti il disegno del db, ti posso dare dritte su come incrociare i dati fra le tabelle, tipo rapporti mensili,proclamatori ecc ecc per poi tirare fuori statistiche come media ore mensile/ annuale per proclamatore, per totalità proclamatori ecc ecc.
Ma in questo caso ti consiglio di cercarmi via email, questo non è il posto giusto.
Bye

Rik142 Profilo | Junior Member

Allora: se i dati li prendi da db il gioco è strutturabile in questa maniera.
1) Ti crei una classe con le proprietà che ti interessano.

Ex:

Public Class DataLayer_TableA_ItemRow Private _Codice As Decimal Public Property Codice() As Decimal Get Return _Codice End Get Set(ByVal value As Decimal) _Codice = value End Set End Property Private _Nome As String Public Property Nome() As String Get Return _Nome End Get Set(ByVal value As String) _Nome = value End Set End Property end class

2) crei una lista del tipo della classe creata:

Ex:

Dim listaA as New List(of DataLayer_TableA_itemRow)

3) ti crei la query di estrazione dei dati dalla tua tabella

EX:

Dim query = select Codice, Nome from tableA

4) passi la query alla tua lista

listaA = query.tolist

5) passi la tua listaA alla Combobox

comboA.datasource = listaA.tolist

6) associ il DisplayMember al Nome ed il ValueMember al Codice

Ex:

comboA.DisplayMember = "Nome"
comboA.ValueMember = "Codice"

Ed il gioco è fatto!!





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