通过代码在DataGridView行之间移动并通过文本框显示

时间:2019-01-13 11:45:35

标签: vb.net visual-studio datagridview

我不是一个经验丰富的程序员,我一定有一些误解。

我有两种形式,一种用于搜索(FormSearch),一种用于显示结果(FormMain)。

问题是:如何用上一个结果(单击btnPrev按钮)或下一个结果(单击btnNext按钮)填充文本框?

FormSearch

Imports System.Data.SqlClient

Public Class FormSearch

Private Sub btnsearch_Click(sender As Object, e As EventArgs) Handles btnsearch.Click
    Dim con As New SqlConnection("Data Source=" & Form1.server & "," & Form1.port & "; Initial Catalog=" & Form1.database & "; User Id=" & Form1.txtUsername.Text & "; Password=" & Form1.txtPassword.Text & ";")

    Dim cmd As New SqlCommand("select * FROM dbo.customers;", con)

    Dim adapter As New SqlDataAdapter(cmd)

    Dim table As New DataTable

    adapter.Fill(table)

    DataGridView1.DataSource = table
End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    If e.RowIndex >= 0 Then
        Dim row As DataGridViewRow
        row = Me.DataGridView1.Rows(e.RowIndex)

        FormMain.TextBox1.Text = row.Cells("Name").Value.ToString
        FormMain.TextBox2.Text = row.Cells("Surname").Value.ToString
        FormMain.TextBox3.Text = row.Cells("Age").Value.ToString
        Me.Hide()
        FormMain.Show()
    End If
End Sub
End Class

FormMain

Public Class FormMain
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    FormSearch.Show()
    Me.Hide()
End Sub

Private Sub btnPrev_Click(sender As Object, e As EventArgs) Handles btnPrev.Click
    'Show prev result
End Sub

Private Sub btnNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click
    'Show next result
End Sub
End Class

1 个答案:

答案 0 :(得分:0)

尝试一下:

1)在FormMain中应用以下代码

Public Class FormMain
    Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
        FormSearch.Show()
        Me.Hide()
    End Sub

Private Sub btnPrev_Click(sender As Object, e As EventArgs) Handles btnPrev.Click
        BS.Position = BS.Position - 1
        DisplayRecords()
End Sub

Private Sub btnNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click
        BS.Position = BS.Position + 1
        DisplayRecords()
End Sub
End Class

2)在FormSearch中应用以下代码

Imports System.Data.SqlClient
Public Class FormSearch
    Private Sub btnsearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
        Dim con As New SqlConnection("Data Source=" & Form1.server & "," & Form1.port & "; Initial Catalog=" & Form1.database & "; User Id=" & Form1.txtUsername.Text & "; Password=" & Form1.txtPassword.Text & ";")
        Dim adapter As New SqlDataAdapter("select * FROM [dbo.customers]", con)
        adapter.Fill(DS, "myTableNane")
        BS.DataSource = DS
        BS.DataMember = "myTableNane"
        DataGridView1.DataSource = BS
    End Sub

    Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
        If e.RowIndex >= 0 Then
            BS.Position = e.RowIndex
            Me.Hide()
            FormMain.Show()
        End If
    End Sub
End Class

2)创建一个模块并放置以下代码。

Module Module1
Public DS As New DataSet
Public WithEvents BS As New BindingSource

Sub DisplayRecords(Optional ByVal table As String = "myTableNane")
        FormMain.TextBox1.Text = DS.Tables(table).Rows(BS.Position)("Name").ToString
        FormMain.TextBox2.Text = DS.Tables(table).Rows(BS.Position)("Surename").ToString
        FormMain.TextBox3.Text = DS.Tables(table).Rows(BS.Position)("Age").ToString
End Sub
End Module

希望您发现它有用并解决了您的问题。 莫伊德