Forums Neueste Beiträge
 

DataBindings

30/07/2008 - 08:28 von Markus Goeldi | Report spam
Hallo NG

Bei einem Windows.Forms.Label (myLabel) möchte ich das DataBindings für das
myLabel.Text Property verwenden. Und zwar so, dass es gebunden ist an:
myDataTable.Rows.Count (myLabel soll immer die aktuelle Anzahl Rows der
DataTable anzeigen).

Wie geht das?

Merci für Tips und Hinweise. Gruss
Markus
 

Lesen sie die antworten

#1 Peter Götz
30/07/2008 - 10:36 | Warnen spam
Hallo Markus,

Bei einem Windows.Forms.Label (myLabel) möchte ich
das DataBindings für das myLabel.Text Property verwenden.
Und zwar so, dass es gebunden ist an:
myDataTable.Rows.Count (myLabel soll immer die aktuelle
Anzahl Rows der DataTable anzeigen).

Wie geht das?



Mit Datenbindung gar nicht.
Du kannst die Texteigenschaft eines Labels an ein
Feld eines Datensatzes binden aber nicht an die
Eigenschaft Rows.Count Deiner DataTable.

Wenn sich die Anzahl der Datensàtze àndert, dann
löst dies in einer zur DataTable gehörenden DataView
das Ereignis 'ListChanged' aus und auf dieses kannst
Du im Code reagieren, um die Anzahl der Datensàtze
anzuzeigen.

Im folgenden Beispiel werden ein Label und ein
DataGridView, sowie eine DataTable mit zugehöriger
DataView erzeugt.
DataGridView (DGV) ist über die DataView (mDV) an
die DataTable (mDT) gebunden.
Label1 ist über die DataView (mDV) an das Feld 'Monat'
der DataTable gebunden.
Die jeweils akt. Anzahl der Datensàtze wird in der
Titelzeile der Form angezeigt.



' /// Code in einer leeren Form1
Public Class Form1
Private WithEvents mDT As DataTable
Private WithEvents mDV As DataView

Private WithEvents DGV As DataGridView
Private Label1 As Label

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

CreateControls()
CreateData()

' DataGridView über die DataView (mDV)
' an die DataTable (mDT) binden.
DGV.DataSource = mDV

' Label1 über die DataView (mDV)
' an das Feld "Monat" der DataTable (mDT)
' binden.
Label1.DataBindings.Add _
(New Binding("Text", mDV, "Monat"))

DGV.AutoResizeColumns()

ShowNumRecords()

End Sub

Private Sub mDV_ListChanged _
(ByVal sender As Object, _
ByVal e As System.ComponentModel.ListChangedEventArgs _
) Handles mDV.ListChanged

ShowNumRecords()
End Sub

Private Sub ShowNumRecords()
Me.Text = "Anzahl DS: " & mDV.Count.ToString
End Sub

Private Sub CreateControls()
Label1 = New Label
With Label1
.Font = New Font("Arial", 12)
.AutoSize = True
.Location = New Point(10, 10)

.Anchor = AnchorStyles.Left Or _
AnchorStyles.Top
End With
Me.Controls.Add(Label1)

DGV = New DataGridView
With DGV
.SetBounds _
(10, Label1.Bottom + 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - (Label1.Bottom + 10))

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

.DefaultCellStyle.Font = Label1.Font

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)
End With
Me.Controls.Add(DGV)
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("Monat", GetType(String))

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

mDV = New DataView(mDT)
End Sub
End Class
' \\\ E N T E

Programm starten.
Im Grid auf verschiedene Zeilen klicken,
im Grid einen neuen DS hinzufügen,
im Grid einen DS löschen und dabei jeweils
die Anzeigen im Label und in der Form-
Titelzeile beobachten.

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

Ähnliche fragen