ComboBox aus DataTable füllen

21/12/2010 - 11:19 von Marcus | Report spam
Hallo,

ich habe eine DataTable mit vier Feldern:
ID
Anrede
Vorname
Nachname

und möchte mit dieser Tabelle eine ComboBox CB derart füllen, dass
- die ID als Wert zurückgegeben
- die Kombination Anrede + Vorname + Nachname angezeigt wird.

also im Code etwas àhnliches wie
CB.DataSource = Table
CB.ValueMember = ID
CB.DisplayMember = Anrede & " " & Vorname & " " & Nachname

wobei die letzte Zeile die fragliche Stelle ist.

Danke,
Marcus
 

Lesen sie die antworten

#1 Peter Götz
21/12/2010 - 15:32 | Warnen spam
Hallo Marcus,

ich habe eine DataTable mit vier Feldern:
ID
Anrede
Vorname
Nachname

und möchte mit dieser Tabelle eine ComboBox CB derart
füllen, dass
- die ID als Wert zurückgegeben
- die Kombination Anrede + Vorname + Nachname angezeigt wird.



Du könntest Anrede + Vorname + Nachname in einer sog.
Expression-Column zusammenfassen.
Kopiere nachfolgenden Code in ein leeres Formmodul (Form1.vb)

' / / / Beginn Code Form1.vb
Public Class Form1
Private mDT As DataTable
Private WithEvents CBO As ComboBox

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

CBO = New ComboBox
With CBO
.Name = "CBO"
.Font = New Font("Arial", 12)

.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
.Height)

.Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right

.DropDownStyle = _
ComboBoxStyle.DropDownList

End With
Me.Controls.Add(CBO)

CreateData()
End Sub


Private Sub Form1_Shown _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Shown

CBO.DataSource = mDT.DefaultView
CBO.DisplayMember = "DField"
CBO.ValueMember = "ID"
End Sub

Private Sub CreateData()
mDT = New DataTable
With mDT
.TableName = "mDT"
.Columns.Add("ID", GetType(Integer))
.Columns(0).Unique = True
.Columns.Add("Anrede", GetType(String))
.Columns.Add("VorName", GetType(String))
.Columns.Add("NachName", GetType(String))

' Expression-Column
.Columns.Add("DField", GetType(String))
.Columns(4).Expression = _
"Anrede + ' ' + VorName + ' ' + NachName"
End With

AddRow(1, "Frau", "Maria", "Müller")
AddRow(2, "Herr", "Hans", "Maier")
AddRow(3, "Frau", "Klara", "Schneider")
AddRow(4, "Herr", "Otto", "Fischer")
AddRow(5, "Herr", "Franz", "Huber")
End Sub

Private Sub AddRow _
(ByVal ID As Integer, _
ByVal Anrede As String, _
ByVal VorName As String, _
ByVal NachName As String)

Dim DR As DataRow
DR = mDT.NewRow
With DR
.Item(0) = ID
.Item(1) = Anrede
.Item(2) = VorName
.Item(3) = NachName
End With
mDT.Rows.Add(DR)
End Sub

Private Sub CBO_SelectedIndexChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles CBO.SelectedIndexChanged

Dim DR As DataRowView = _
DirectCast(CBO.SelectedItem, DataRowView)

Me.Text = "ID: " & DR.Item("ID").ToString
End Sub
End Class
' \ \ \ E N T E

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen