Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

combo box con più colonne

112 views
Skip to first unread message

GB

unread,
May 20, 2004, 7:34:41 AM5/20/04
to
salve a tutti,
come faccio a visualizzare più colonne dello stesso record in una combo?

tipo | Nome | Cognome |

ciao

Inviato da www.mynewsgate.net

Marco Barzaghi

unread,
May 20, 2004, 7:55:55 AM5/20/04
to
> come faccio a visualizzare più colonne dello stesso record in una combo?
> tipo | Nome | Cognome |

1. definisco una classe per la formattazione degli Item

---
Class ItemFormatter

Dim mValue As Object
Dim mDescription As String

Public Sub New(ByVal v As Object, ByVal d As String)
mValue = v
mDescription = d
End Sub

Public ReadOnly Property Value() As Object
Get
Return mValue
End Get
End Property

Public ReadOnly Property Description() As String
Get
Return mDescription
End Get
End Property

End Class

2. Implemento una funzione di utilità che mi aiuta a caricare la combo.

---
Public Sub FillCombo(ByVal Combo As ComboBox, ByVal source As DataTable, _
ByVal valueMember As String, ByVal formatDisplay As String, _
ByVal ParamArray displayMembers() As String)

Dim list As New ArrayList

Dim row As DataRow
For Each row In source.Rows

Dim values(displayMembers.Length) As Object
Dim c As Integer
For c = 0 To displayMembers.Length - 1
values(c) = row.Item(displayMembers(c))
Next

Dim description As String = String.Format(formatDisplay,
displayMembers)
Dim value As Object = row.Item(valueMember)

list.Add(New ItemFormatter(value, description))

Next

Combo.DataSource = list
Combo.ValueMember = "Value"
Combo.DisplayMember = "Description"

End Sub

3. testare è sempre una buona abitudine :-p

Dim dt As New DataTable
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Nome", GetType(String))
dt.Columns.Add("Cognome", GetType(String))

dt.Rows.Add(New Object() {1, "Marco", "Barzaghi"})
dt.Rows.Add(New Object() {2, "GB", "Anonymous"})
dt.AcceptChanges()

FillCombo(ComboBox1, dt, "ID", "{0} | {1}", "Nome", "Cognome")


Se invece di avere una datatable hai una collezione tipizzata devi usare
Reflection per fare la Fill della Combo...
ma la sostanza non cambia :-p

HTH M.rkino

--
Marco Barzaghi - [MVP - MCP]
MS MVP Program: http://mvp.support.microsoft.com - http://italy.mvps.org/
UGIdotNet, User Group Italiano .NET - http://www.ugidotnet.org
Read my web log: http://www.ugidotnet.org/436.blog
http://www.bertaplanet.tk


Sy

unread,
May 20, 2004, 8:03:19 AM5/20/04
to
Qui c'é un esempio di quello che cerchi....
http://www.codeproject.com/vb/net/multicolumncombo.asp


"GB" <6762i...@mynewsgate.net> ha scritto nel messaggio
news:200405201...@mynewsgate.net...

Marco Barzaghi

unread,
May 20, 2004, 8:00:09 AM5/20/04
to
Ops errata korrige :-p

Nel primo post ho scritto:


Dim description As String = String.Format(formatDisplay, displayMembers)

Invece di:
Dim description As String = String.Format(formatDisplay, values)

e si ke lo avevo anke testato,
pardon :-p

Sy

unread,
May 20, 2004, 8:08:13 AM5/20/04
to
A me invece interesserebbe sapere se la combo che c'č in codeproject (ossia
quella che permette di avere + colonne)si puň usare anche nel caso in cui
alla combo ho la necessita di settare un'origine dati un dataMember e un
dataValue.....
Non vorrei mai abbissarmi in una cosa per scoprire che non si puň fare....
Grazie

"GB" <6762i...@mynewsgate.net> ha scritto nel messaggio
news:200405201...@mynewsgate.net...
> salve a tutti,
> come faccio a visualizzare piů colonne dello stesso record in una combo?

Sy

unread,
May 20, 2004, 8:09:57 AM5/20/04
to
Ciao Marco.....
è un piacere trovarti da queste parti di tanto in tanto....

[Webbit di Padova ..... Simone]
"Marco Barzaghi" <marco.barzaghi_T...@gsol.it> ha scritto nel
messaggio news:OQd1eKmP...@TK2MSFTNGP10.phx.gbl...

GB

unread,
May 20, 2004, 8:19:17 AM5/20/04
to
grazie mille
a presto

Inviato da www.mynewsgate.net

0 new messages