XML Datei in der ComboBox

08/04/2010 - 16:53 von Mike Berger | Report spam
Hallo zusammen,

ich habe eine ComboBox auf meiner frm und der DisplayMember wird auch
korrekt angezeigt.

Folgender Code:
Dim ds As DataSet = New DataSet()
ds.ReadXml("xmlfile1.xml")
Me.ComboBox1.DataSource = ds.Tables("iata")
Me.ComboBox1.DisplayMember = "name"

Aber wie kann ich nun je nach Auswahl in der ComboBox meine 3 Textboxen
mit den jeweiligen Inhalt der Tabelle IATA.CODE; IATA.REGION;
IATA.COUNTRY füllen?

Danke Euch
Mike
 

Lesen sie die antworten

#1 Peter Götz
09/04/2010 - 09:33 | Warnen spam
Hallo Mike,

ich habe eine ComboBox auf meiner frm und der DisplayMember wird auch
korrekt angezeigt.

Folgender Code:
Dim ds As DataSet = New DataSet()



Wozu brauchst Du das DataSet?

ds.ReadXml("xmlfile1.xml")
Me.ComboBox1.DataSource = ds.Tables("iata")
Me.ComboBox1.DisplayMember = "name"

Aber wie kann ich nun je nach Auswahl in der ComboBox meine 3 Textboxen
mit den jeweiligen Inhalt der Tabelle IATA.CODE; IATA.REGION; IATA.COUNTRY
füllen?



Das nachfolgende Beispiel zeigt Dir eine an eine
DataTable/DataView gebundene ComboBox.
Die Details, des jeweils in der ComboBox ausgewàhlten
Datensatzes werden in den Textboxen angezeigt.

' /// Code in einer leeren Form (Form1.vb)
Public Class Form1
Private WithEvents txtID As TextBox
Private WithEvents txtSText As TextBox
Private WithEvents txtLText As TextBox
Private WithEvents cboNav As ComboBox

Private mDT As DataTable
Private mDV As DataView
Private WithEvents mCM As CurrencyManager

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

CreateControls()
CreateData()

BindControls()

mCM.Position = mCM.Count - 1
End Sub

Private Sub CreateControls()
Me.ClientSize = New Size(314, 200)

txtID = New TextBox
With txtID
.Font = New Font("Arial", 12)
.SetBounds(10, 10, 50, .Height)
End With
Me.Controls.Add(txtID)

txtSText = New TextBox
With txtSText
.Font = txtID.Font

.SetBounds _
(txtID.Right + 2, 10, _
90, .Height)

End With
Me.Controls.Add(txtSText)

txtLText = New TextBox
With txtLText
.Font = txtID.Font

.SetBounds _
(txtSText.Right + 2, 10, _
150, .Height)

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

End With
Me.Controls.Add(txtLText)

cboNav = New ComboBox
With cboNav
.Font = txtID.Font

.SetBounds _
(10, txtID.Bottom + 30, _
Me.ClientSize.Width - 20, _
.Height)

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

End With
Me.Controls.Add(cboNav)
End Sub

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("SText", GetType(String))
.Columns.Add("LText", GetType(String))

For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, True)
DR.Item(2) = MonthName(i, False)
.Rows.Add(DR)
Next
.AcceptChanges()
End With

mDV = New DataView(mDT)

End Sub

Private Sub BindControls()
cboNav.DataSource = mDV
cboNav.DisplayMember = "LText"

txtID.DataBindings.Add _
(New Binding("Text", mDV, "ID"))

txtSText.DataBindings.Add _
(New Binding("Text", mDV, "SText"))

txtLText.DataBindings.Add _
(New Binding("Text", mDV, "LText"))

mCM = _
DirectCast _
(cboNav.BindingContext(mDV), _
CurrencyManager)
End Sub

Private Sub mCM_PositionChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mCM.PositionChanged

Me.Text = _
"mCM.Position: " & _
mCM.Position.ToString
End Sub
End Class
' \\\ E N T E

ComboBox und Textboxen sind an die DataTable (mDT)
via DataView (mDV) gebunden.
Die Textboxen zeigen die Feldinhalte des jeweils in der
ComboBox ausgewàhlten Datensatzes.
In der Titelleiste der Form wird die akt. Datensatzposition
(mCM.Position) angezeigt.

Ein weiteres Beispiel zum Thema findest Du unter

www.gssg.de -> Visual Basic -> VB.net
-> DataTable / DataView / CurrencyManager
-> Textbox DataBinding


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

Ähnliche fragen