DatagridView MoveNext

02/03/2008 - 04:16 von Thomas Baierle | Report spam
Hallo liebes Forum,

ich bin echt zu blöde, unter VB 2005 in einem stinknormalem DatagridView per
Quellcode 1 Zeiel nach vorne zu navigieren.

Unter VB6 gabe es bspw. grid.movenext.

Ich habe bereits in verschiedenen Handbüchern und bei Google nachgeschaut,
aber leider nix gefunden.

Liebe Grüße
 

Lesen sie die antworten

#1 Peter Götz
02/03/2008 - 17:14 | Warnen spam
Hallo Thomas,

ich bin echt zu blöde, unter VB 2005 in einem
stinknormalem DatagridView per
Quellcode 1 Zeiel nach vorne zu navigieren.

Unter VB6 gabe es bspw. grid.movenext.



In VB.net brauchst Du dazu z.B. einen Currencymanager
und kannst dann mit CurrencyManager.Position =
in Deinem Datenbestand navigieren.

Hier mal ein kleines Beispiel.

' /// Code in einer leeren Form
Public Class Form1

Private WithEvents DGV As DataGridView
Private WithEvents btnPrevious As Button
Private WithEvents btnNext As Button

Private mDT As DataTable
Private WithEvents 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

Me.Size = New Size(240, 380)
CreateData()

CreateControls()

DGV.DataSource = mDV

DGV.Columns(0).DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight

DGV.AutoResizeColumns()

' zum letzten Datensatz gehen
mCM.Position = mCM.Count - 1

End Sub


Private Sub BtnClick_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles btnNext.Click, btnPrevious.Click

If sender Is btnNext Then
' einen Datensatz vor
mCM.Position += 1
Else
' einen Datensatz zurück
mCM.Position -= 1
End If
End Sub

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

If mCM.Position > -1 Then
Dim drv As DataRowView
drv = DirectCast _
(mCM.Current, DataRowView)

Me.Text = drv.Item(0).ToString & ": " & _
drv.Item(1).ToString
End If
End Sub

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

' Neue DataTable erstellen
mDT = New DataTable
With mDT
' Spalten zur DataTable hinzufügen
.Columns.Add("ID", GetType(Integer))
.Columns(0).Unique = True
.Columns(0).AllowDBNull = False

.Columns.Add("Text", GetType(String))

' DataTable mit Daten füllen
For i = 1 To 12
' neuen Datensatz erstellen
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, False)

' neuen Datensatz
' zur .Rows-Auflistung hinzufügen
.Rows.Add(DR)
Next
.AcceptChanges()
End With

' DataView (mDV) zur
' DataTable (mDT) erstellen
mDV = New DataView(mDT)
With mDV
.AllowDelete = False
.AllowNew = False
.AllowEdit = False
End With

' CurrencyManager (mCM) zur
' DataView (mDV) erstellen
mCM = _
DirectCast _
(Me.BindingContext(mDV), _
CurrencyManager)

End Sub

Private Sub CreateControls()
btnNext = New Button
With btnNext
.Name = "btnNext"
.SetBounds _
(Me.ClientSize.Width - 40, _
Me.ClientSize.Height - 40, _
30, 30)

.Anchor = AnchorStyles.Right Or _
AnchorStyles.Bottom

.Font = New Font("Arial", 10)
.Text = ">"
End With
Me.Controls.Add(btnNext)

btnPrevious = New Button
With btnPrevious
.Name = "btnPrevious"
.Size = btnNext.Size

.Location = _
New Point(btnNext.Left - 40, btnNext.Top)

.Font = btnNext.Font

.Anchor = AnchorStyles.Right Or _
AnchorStyles.Bottom

.Text = "<"
End With
Me.Controls.Add(btnPrevious)

DGV = New DataGridView
With DGV
.Name = "DGV"
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 60)

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

.DefaultCellStyle.Font = _
New Font("Arial", 12)

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)

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

End Class
' \\\ E N T E

Nach dem Programmstart kannst Du mit den beiden
Buttons [<] und [>] jeweils einen Datensatz zurück
oder vorwàrts navigieren. Die Auswertung der
Button_Click-Ereignisse erfolgt in der Sub BtnClick_Click.

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

Ähnliche fragen