Re: Mit Textbox auf Spalte von DataGrid zugreifen
- From: "Peter Götz" <gssg_nospam@xxxxxxxxxxx>
- Date: Fri, 22 Dec 2006 18:18:58 +0100
Hallo Tamara,
Ich habe auf einer Form eine DataGridView und darin 3 Spalten.
Den Wert der 3. Spalte hätte ich gerne in einer Textbox.
Von Access her kenne ich die Möglichkeit von Column(3).text
Vergiss Access und überlege, wo Deine Daten ursprünglich herkommen.
Das nachfolgende Beispiel zeigt Dir, wie Du direkt auf die eigentliche
Datenquelle zugreifst:
' /// Code in einer leeren Form1
Public Class Form1
Private WithEvents DGV As DataGridView
Private WithEvents mCM As CurrencyManager
Private mDT As DataTable
Private mDV As DataView
Private Sub InitDGV()
DGV = New DataGridView
With DGV
.Bounds = New Rectangle _
( _
10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 20 _
)
.Anchor = AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom
.Font = New Font("Arial", 10)
End With
Me.Controls.Add(DGV)
End Sub
Private Sub MakeData()
Dim DR As DataRow
Dim i As Integer
mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns(0).Unique = True
.Columns.Add("Text", 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)
mCM = CType(Me.BindingContext(mDV), _
CurrencyManager)
End Sub
Private Sub Form1_Load _
( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load
MakeData()
InitDGV()
DGV.DataSource = mDV
mCM.Position = 5
End Sub
Private Sub mCM_PositionChanged _
( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mCM.PositionChanged
Dim RecNum As Integer = mCM.Position
If RecNum > -1 Then
Dim DRV As DataRowView
DRV = CType(mCM.Current, DataRowView)
' alternativ
'DRV = mDV.Item(RecNum)
Me.Text = DRV.Item(0).ToString & _
" : " & _
DRV.Item(1).ToString
Else
Me.Text = ""
End If
End Sub
End Class
' \\\ E N T E
Du kannst natürlich auch die Daten aus den jeweiligen DataGridView-Cells
holen, was aber implizit auch nur wieder ein Zugriff auf die ursprünglichen
Daten der DataSource (DataView/DataTable) ist. Mit nachfolgendem Code in
DGV_CurrentCellChanged wäre ein solcher Zugriff möglich.
Dim DGVR As DataGridViewRow = DGV.CurrentRow
Me.Text = DGVR.Cells(0).Value.ToString & " : " & _
DGVR.Cells(1).Value.ToString()
Zum Sortieren, Filtern usw. brauchst Du in fast allen Fällen ohnehin eine
DataView und zum Navigieren von Datensatz zu Datensatz ist ein
CurrencyManager sinnvoll. Also ist es einfacher und direkter, gleich diese
"ursprünglichen" Objekte zu verwenden um auf die Daten zuzugreifen.
Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)
.
- Follow-Ups:
- Re: Mit Textbox auf Spalte von DataGrid zugreifen
- From: Tamara Mikes
- Re: Mit Textbox auf Spalte von DataGrid zugreifen
- References:
- Mit Textbox auf Spalte von DataGrid zugreifen
- From: Tamara Mikes
- Mit Textbox auf Spalte von DataGrid zugreifen
- Prev by Date: Microsoft Report Viewer Redistributable 2005
- Next by Date: Re: Ablaufdiagramm aus VB-Code erzeugen?
- Previous by thread: Re: Mit Textbox auf Spalte von DataGrid zugreifen
- Next by thread: Re: Mit Textbox auf Spalte von DataGrid zugreifen
- Index(es):
Relevant Pages
|