Wie Sie den Wert des DataGridView.SelectedRows().Zellen (), die aus verschiedenen Formen?

Ich habe 2 Formen und in jeweils 2 Formen gibt es eine DataGridView(chatform und prodetail).

In der chatform ich erstellte eine DataGridView welche einen generierten Button in jeder Zeile.

Jeder Button wenn darauf geklickt wird, laden Sie eine prodetail form und, wenn in der prodetail form ich will den Wert der SelectedRow.Cell von der DataGridView im Ursprung chatform.

Code (chatform):

Public Sub loadtoDGV()
    Dim sqlq As String = "SELECT * FROM chattbl"
    Dim sqlcmd As New SqlCommand
    Dim sqladpt As New SqlDataAdapter
    Dim tbl As New DataTable

    With sqlcmd
        .CommandText = sqlq
        .Connection = conn
    End With

    With sqladpt
        .SelectCommand = sqlcmd
        .Fill(tbl)
    End With

    DataGridView1.Rows.Clear()
    For i = 0 To tbl.Rows.Count - 1
        With DataGridView1
            .Rows.Add(tbl.Rows(i)("Username"), tbl.Rows(i)("Title"), tbl.Rows(i)("ChatDateTime"))
        End With
    Next
    conn.Close()
End Sub

Private Sub ChatForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    loadtoDGV()
End Sub

Code (DataGridView1.CellContentClick):

Private Sub grdData_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    Dim colName As String = DataGridView1.Columns(e.ColumnIndex).Name
    If colName = "Detail" Then
        Prodetail.Show()
        MessageBox.Show(String.Format("You clicked the button in row {0} of the Detail column", e.RowIndex))
    End If
End Sub

Code (prodetail):

Public Sub loadtoDGV2()

    Dim i As Integer
    i = ChatForm.DataGridView1.SelectedRows.Count
    MsgBox(i)

    Dim compareai As String = ChatForm.DataGridView1.SelectedRows(i).Cells(1).Value
    Dim sqlq As String = "SELECT * FROM Chattbl WHERE Title =" & compareai & ""
    Dim sqlcmd As New SqlCommand
    Dim sqladpt As New SqlDataAdapter
    Dim tbl As New DataTable

    With sqlcmd
        .CommandText = sqlq
        .Connection = conn
    End With

    With sqladpt
        .SelectCommand = sqlcmd
        .Fill(tbl)
    End With

    DataGridView1.Rows.Clear()
    For i = 0 To tbl.Rows.Count - 1
        With DataGridView1
            .Rows.Add(tbl.Rows(i)("Username"), tbl.Rows(i)("Title"), tbl.Rows(i)("ChatDateTime"), tbl.Rows(i)("ChatContent"))
        End With
    Next
    conn.Close()
End Sub

Private Sub Prodetail_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    loadtoDGV2()
End Sub

Was habe ich falsch gemacht?

Habe ich versucht zu verwenden MsgBox(i) i = SelectedRow(0) vorausgesetzt, es zeigen würde, die Daten für die erste Zeile, aber DataGridView1 im prodetail lädt nicht alle Daten aus der Datenbank.

Habe ich nicht beobachten können Fehler, ich habe nicht nur eine Lösung.

InformationsquelleAutor | 2013-03-22
Schreibe einen Kommentar