Benutzer mit den meisten Antworten
Daten aus Datagrid in einer Form zum bearbeiten

Frage
-
Hallo, ich arbeite unter Vb9 Express an einer Bauteildatenbank. Die gefilterten Bauelemente werden in einem DataGridView angezeigt. Der SelectionMode steht auf FullRowSelect. Nun möchte ich die Daten mittels Doppelklick in eine zweite Form zum bearbeiten laden. Wie bekomme ich die Abfrage des Doppelklicks hin und wie lade ich die gewählten Daten in die neue Form? Ich hoffe hier kann mir jemand helfen
Gruss
Antworten
-
Hallo 1Peltztier,
Habe zwei Forms aufgestellt. In der ersten Form wird eine DataGridView mit Testdaten geladen. Dieses DataGridView hat zwei Spalten und hat die Eigenschaft SelectionMode als FullRowSelect eingestellt.
In der zweiten Form habe ich zwei TextBoxen. Wenn man im ersten Form doppelklick auf eine Zeile macht dann werden die ausgewählten Werte aus der DataGridView zu den TextBoxen in der zweite Form übergeben.
Public Class Form1 Private dt As DataTable = Testdata.Getdata '//Testdaten laden Private bs As New BindingSource(dt, "") Private WithEvents dgv As New DataGridView With {.Dock = DockStyle.Fill, _ .AllowUserToAddRows = False, _ .ReadOnly = True, .DataSource = bs, .SelectionMode = DataGridViewSelectionMode.FullRowSelect} Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(dgv) '//Das Grid auf der Form platzieren End Sub Private Sub dgv_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick Form2.tb1.Text = dgv.Rows(e.RowIndex).Cells(0).Value Form2.tb2.Text = dgv.Rows(e.RowIndex).Cells(1).Value Form2.ShowDialog() End Sub End Class Friend Class Testdata Public Shared Function Getdata() As DataTable Dim dt As New DataTable("Tab1") With dt With .Columns With .Add("ID", GetType(Integer)) .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With .Add("Bauteil", GetType(String)) End With For i = 1 To 100 Dim r As DataRow = .NewRow r.Item("Bauteil") = "Bauteil nummer " & i.ToString .Rows.Add(r) Next End With Return dt End Function End Class
Public Class Form2 Public WithEvents tb1 As New TextBox With {.top = 25} Public WithEvents tb2 As New TextBox With {.Top = 75} Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(tb1) Me.Controls.Add(tb2) End Sub End Class
Grüße,Robert
- Als Antwort markiert 1Peltztier Mittwoch, 23. Dezember 2009 15:16
Alle Antworten
-
Hallo 1Peltztier,
hatte ich gerade zur hand. schau dir das mal an
' DataGridView Programme Double Click Private Sub DaGrVie_Porgramme_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DaGrVie_Porgramme.CellDoubleClick Dim Selected As Integer = DaGrVie_Porgramme.CurrentRow.Index ' Ausgewähle Zeile
Dim Programm As String Programm = DaGrVie_Porgramme.Rows(Selected).Cells(2).Value ' Pfad und Name an Variable übergeben Try System.Diagnostics.Process.Start(Programm) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub- Bearbeitet Bernd Schlepütz Samstag, 21. November 2009 19:43
-
Danke,
so bekommeich heraus welche Zeile ich habe.
Jetzt benötige ich noch einen Hinweis, wie ich der Datenbank sage welchen Datensatz ich brauche und wie ich die Form zum bearbeiten dieses Datensatzes fülle.
Vielleicht kann mir ja jemand einen Tip geben
Gruss -
Hallo 1Peltztier,
Habe zwei Forms aufgestellt. In der ersten Form wird eine DataGridView mit Testdaten geladen. Dieses DataGridView hat zwei Spalten und hat die Eigenschaft SelectionMode als FullRowSelect eingestellt.
In der zweiten Form habe ich zwei TextBoxen. Wenn man im ersten Form doppelklick auf eine Zeile macht dann werden die ausgewählten Werte aus der DataGridView zu den TextBoxen in der zweite Form übergeben.
Public Class Form1 Private dt As DataTable = Testdata.Getdata '//Testdaten laden Private bs As New BindingSource(dt, "") Private WithEvents dgv As New DataGridView With {.Dock = DockStyle.Fill, _ .AllowUserToAddRows = False, _ .ReadOnly = True, .DataSource = bs, .SelectionMode = DataGridViewSelectionMode.FullRowSelect} Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(dgv) '//Das Grid auf der Form platzieren End Sub Private Sub dgv_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick Form2.tb1.Text = dgv.Rows(e.RowIndex).Cells(0).Value Form2.tb2.Text = dgv.Rows(e.RowIndex).Cells(1).Value Form2.ShowDialog() End Sub End Class Friend Class Testdata Public Shared Function Getdata() As DataTable Dim dt As New DataTable("Tab1") With dt With .Columns With .Add("ID", GetType(Integer)) .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With .Add("Bauteil", GetType(String)) End With For i = 1 To 100 Dim r As DataRow = .NewRow r.Item("Bauteil") = "Bauteil nummer " & i.ToString .Rows.Add(r) Next End With Return dt End Function End Class
Public Class Form2 Public WithEvents tb1 As New TextBox With {.top = 25} Public WithEvents tb2 As New TextBox With {.Top = 75} Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Controls.Add(tb1) Me.Controls.Add(tb2) End Sub End Class
Grüße,Robert
- Als Antwort markiert 1Peltztier Mittwoch, 23. Dezember 2009 15:16