Как мне получить данные datagridview для каждой строки и показать их в текстовых полях в ДРУГОЙ ФОРМЕ? VB.Net - PullRequest
0 голосов
/ 10 мая 2018

У меня есть две формы. Одним из них является Main.vb , в котором находится datagridview , а другим - EditPage.vb , который состоит из набора Textboxes . Если я щелкну строку в сетке данных и нажму кнопку редактирования в сетке данных в Main.vb оно войдет в EditPage.vb . Затем данные строки , по которой щелкнули , будут отображаться в текстовых полях в EditPage.vb ... Я попытаюсь опубликовать мои переменные и установите его в другой форме (EditPage.vb) , но данные выбранной строки все же не отображаются. Что-то не так в моем коде , даже если в нем нет ошибок?

Вот код моего содержимого ячейки datagridview. Нажмите in Main.vb

Private Sub tblAttendance_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles tblAttendance.CellContentClick
    Dim row As DataGridViewRow = tblAttendance.CurrentRow





    Try
        id = row.Cells(0).Value.ToString()
        firstname = row.Cells(1).Value.ToString
        lastname = row.Cells(2).Value.ToString
        birthdate = row.Cells(3).Value.ToString
        position = row.Cells(4).Value.ToString
        sex = row.Cells(5).Value.ToString
        address = row.Cells(6).Value.ToString
        contact_num = row.Cells(7).Value.ToString
        email = row.Cells(8).Value.ToString

    Catch ex As Exception
        MessageBox.Show("Input Data Properly!", "Error Message")
    End Try
End Sub

Вот код моего Кнопка редактирования в Main.vb

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim result As Integer = MessageBox.Show("Are you sure you want to Edit the Info?", "Validation", MessageBoxButtons.YesNoCancel)

    If DialogResult.Yes Then

        Edit_Page.Show()

    ElseIf DialogResult.No Then
        MessageBox.Show("Edit Cancelled", "Message")

    End If

End Sub

А вот и мои публичные переменные в Main.vb

Public id As Integer
Public firstname As String
Public lastname As String
Public birthdate As String
Public position As String
Public sex As String
Public address As String
Public contact_num As String
Public email As String

Мои Публичные переменные в EditPage.vb для получения открытых переменных в Main .vb

Public id_edit As Integer
Public firstname_edit As String
Public lastname_edit As String
Public birthdate_edit As String
Public position_edit As String
Public sex_edit As String
Public address_edit As String
Public contact_num_edit As String
Public email_edit As String

Код в виде Edit.Page.vb или с именем Edit_Page_Load

 id_edit = Main.id
    firstname_edit = Main.firstname
    lastname_edit = Main.lastname
    birthdate_edit = Main.birthdate
    position_edit = Main.position
    sex_edit = Main.sex
    address_edit = Main.address
    contact_num_edit = Main.contact_num
    email_edit = Main.email


    firstname_txtbox.Text = firstname_edit
    lastname_txtbox.Text = lastname_edit
    DateTimePicker1.Text = birthdate_edit
    position_txtbox.Text = position_edit
    sex_combo.Text = sex_edit
    address_txtbox.Text = address_edit
    contact_mask.Text = contact_num_edit
    email_txtbox.Text = email_edit

ВНОВЬ, МОЯ ПРОБЛЕМА - Я НЕ МОГУ ПОЛУЧИТЬ ДАННЫЕ ВЫБРАННОГО РЯДА МОЕГО ОБЗОР ДАННЫХ IN MAIN.VB И ПОКАЗАТЬ ЭТО IN EDITPAGE.VB'S TEXTBOXES .

1 Ответ

0 голосов
/ 10 мая 2018

Объявление класса (уровня формы) Открытая переменная для источника привязки.

Public bind As New BindingSource()

Привязка к вашему DataGridView

Private Sub FillGrid()
        Dim dt As New DataTable
        Using cn As New SqlConnection(My.Settings.CoffeeConnectionString)
            Dim strSQL As String = "Select * From Coffees;"
            Using cmd As New SqlCommand(strSQL, cn)
                'dr As SqlDataReader
                cn.Open()
                Using dr As SqlDataReader = cmd.ExecuteReader
                    dt.Load(dr)
                End Using
            End Using
        End Using
        bind.DataSource = dt
        DataGridView1.DataSource = bind
End Sub

Затем во второй форме используйте BindingSource изпервая форма.

Private Sub TestBindingSource_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        txtCoffeeName.DataBindings.Add("Text", ExcelToDGV.bind, "Name")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...