Перемещение между строками DataGridView через код и показ через текстовые поля - PullRequest
0 голосов
/ 13 января 2019

Я не опытный программист, и, должно быть, я ошибся.

У меня есть две формы, одна для поиска (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 голосов
/ 13 января 2019

Попробуйте это:

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

Надеюсь, вы найдете это полезным и решили вашу проблему. Moiyd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...