Sql server 如何通过位于另一表单上的文本框更新datagridview中的选定行?

Sql server 如何通过位于另一表单上的文本框更新datagridview中的选定行?,sql-server,vb.net,winforms,datagridview,Sql Server,Vb.net,Winforms,Datagridview,嗨,伙计们,到目前为止,我一直在使用我的系统,它几乎完成了,但有一件事我还不能解决(除非你帮我解决)。 这是我的代码: Private Sub btnEditmain_Click(sender As Object, e As EventArgs) Handles btnEditmain.Click Try editdgv() Form2.Show() DataGridView2.AllowUserToAddRows = True

嗨,伙计们,到目前为止,我一直在使用我的系统,它几乎完成了,但有一件事我还不能解决(除非你帮我解决)。 这是我的代码:

Private Sub btnEditmain_Click(sender As Object, e As EventArgs) Handles btnEditmain.Click

    Try
        editdgv()
        Form2.Show()
        DataGridView2.AllowUserToAddRows = True
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
这是私人潜水艇

Private Sub editdgv()
    Dim i = DataGridView2.CurrentRow.Index

    With DataGridView2
        Form2.txtPeriod.Text = IIf(IsDBNull(.Rows(i).Cells("period").Value), " ", .Rows(i).Cells("period").Value)
        Form2.txtVouch.Text = IIf(IsDBNull(.Rows(i).Cells("vouch_amt").Value), " ", .Rows(i).Cells("vouch_amt").Value)
        Form2.txtIndivAmt.Text = IIf(IsDBNull(.Rows(i).Cells("individual_amt").Value), " ", .Rows(i).Cells("individual_amt").Value)
        Form2.txtCheckno.Text = IIf(IsDBNull(.Rows(i).Cells("check_no").Value), " ", .Rows(i).Cells("check_no").Value)
        Form2.txtDmailed.Text = IIf(IsDBNull(.Rows(i).Cells("D_MAILED").Value), " ", .Rows(i).Cells("D_MAILED").Value)
        Form2.txtDirno.Text = IIf(IsDBNull(.Rows(i).Cells("DIR_NO").Value), " ", .Rows(i).Cells("DIR_NO").Value)
        Form2.txtYrlvl.Text = IIf(IsDBNull(.Rows(i).Cells("year_student").Value), " ", .Rows(i).Cells("year_student").Value)
        Form2.txtUpdatedBy.Text = IIf(IsDBNull(.Rows(i).Cells("who_updated").Value), " ", .Rows(i).Cells("who_updated").Value)
    End With
End Sub
我能够将datagridview中所选行的值传递给另一个表单(textbox) 从那以后一切都很顺利

现在我想做的是更新我文本框中所选的datagridview。 通过点击按钮

现在我一直在保存我在文本框中所做的更改,所以它将在数据库中更新

请帮助我如何通过点击按钮更新文本框中datagridview中的选定行。 谢谢


我在记事本中创建了此代码。所以,它可能有一些问题

FORM 1
Private Sub btnEditmain_Click(sender As Object, e As EventArgs) Handles btnEditmain.Click

   Try
        Dim dt As DataTable = TryCast(DataGridView2.DataSource, DataTable)
        Dim dr As DataRow = dt.Rows(DataGridView2.CurrentRow.Index)
        Dim frm As New Form2
        frm.dr = dr
        frm.Show()
        DataGridView2.AllowUserToAddRows = True
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub


FORM 2

Public dr As DataRow = Nothing

Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    With dr
        txtPeriod.Text = IIf(IsDBNull(.Item("period")), vbNullString, .Item("period").ToString)
        txtVouch.Text = IIf(IsDBNull(.Item("vouch_amt")), vbNullString, .Item("vouch_amt").ToString)
        txtIndivAmt.Text = IIf(IsDBNull(.Item("individual_amt")), vbNullString, .Item("individual_amt").ToString)
        txtCheckno.Text = IIf(IsDBNull(.Item("check_no")), vbNullString, .Item("check_no").ToString)
        txtDmailed.Text = IIf(IsDBNull(.Item("D_MAILED")), vbNullString, .Item("D_MAILED").ToString)
        txtDirno.Text = IIf(IsDBNull(.Item("DIR_NO")), vbNullString, .Item("DIR_NO").ToString)
        txtYrlvl.Text = IIf(IsDBNull(.Item("year_student")), vbNullString, .Item("year_student").ToString)
        txtUpdatedBy.Text = IIf(IsDBNull(.Item("who_updated")), vbNullString, .Item("who_updated").ToString)
    End With
End Sub

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    With dr
        .Item("period") = txtPeriod.Text
        .Item("vouch_amt") = txtVouch.Text
        .Item("individual_amt") = txtIndivAmt.Text
        .Item("check_no") = txtCheckno.Text
        .Item("D_MAILED") = txtDmailed.Text
        .Item("DIR_NO") = txtDirno.Text
        .Item("year_student") = txtYrlvl.Text
        .Item("who_updated") = txtUpdatedBy.Text
    End With    
    dr.Table.AcceptChanges
End Sub

有很多方法可以很容易地做到这一点,但是,有必要使用适当的方法。所以,我想知道你的网格是有界的还是无界的。意思是您已经分配了DataGridView的数据源还是手动输入?我从中分配了一个数据源。所以它有一个查询,然后像下面这样的Dim strcom2,比如String=“select period,VOUCH\u AMT,personal\u AMT,check\u no,D\u MAILED,DIR\u no,who\u updated,year\u student from tobee.EBD\u BILLHISTORY,其中CLAIM\u no like'+txtClaimno.Text+””dt2.Clear()'用数据库中的数据填充数据表。Dim dataAdapter作为新的SqlDataAdapter(strcom2,connstr)dataAdapter.Fill(dt2)dataAdapter.Dispose()DataGridView2.DataSource=dt2a btneditmain中存在大量错误。:/其中一个是datarow Dr抱歉,有一个声明问题。我已更新代码,请查看。未处理MissingMemberException:未找到类型“String”上的公共成员“Value”。突出显示的错误在这一行“txtPeriod.Text=IIf(IsDBNull(.Item(“period”).Value)、vbNullString、.Item(“period”).Value)”,在那里它是remove.Value在.Item(“columnname”)之后仍然是相同的错误。。我忘了写错误提示。上面说。如果试图访问后期绑定对象变量的成员,请确保该变量已声明为公共
FORM 1
Private Sub btnEditmain_Click(sender As Object, e As EventArgs) Handles btnEditmain.Click

   Try
        Dim dt As DataTable = TryCast(DataGridView2.DataSource, DataTable)
        Dim dr As DataRow = dt.Rows(DataGridView2.CurrentRow.Index)
        Dim frm As New Form2
        frm.dr = dr
        frm.Show()
        DataGridView2.AllowUserToAddRows = True
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub


FORM 2

Public dr As DataRow = Nothing

Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    With dr
        txtPeriod.Text = IIf(IsDBNull(.Item("period")), vbNullString, .Item("period").ToString)
        txtVouch.Text = IIf(IsDBNull(.Item("vouch_amt")), vbNullString, .Item("vouch_amt").ToString)
        txtIndivAmt.Text = IIf(IsDBNull(.Item("individual_amt")), vbNullString, .Item("individual_amt").ToString)
        txtCheckno.Text = IIf(IsDBNull(.Item("check_no")), vbNullString, .Item("check_no").ToString)
        txtDmailed.Text = IIf(IsDBNull(.Item("D_MAILED")), vbNullString, .Item("D_MAILED").ToString)
        txtDirno.Text = IIf(IsDBNull(.Item("DIR_NO")), vbNullString, .Item("DIR_NO").ToString)
        txtYrlvl.Text = IIf(IsDBNull(.Item("year_student")), vbNullString, .Item("year_student").ToString)
        txtUpdatedBy.Text = IIf(IsDBNull(.Item("who_updated")), vbNullString, .Item("who_updated").ToString)
    End With
End Sub

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    With dr
        .Item("period") = txtPeriod.Text
        .Item("vouch_amt") = txtVouch.Text
        .Item("individual_amt") = txtIndivAmt.Text
        .Item("check_no") = txtCheckno.Text
        .Item("D_MAILED") = txtDmailed.Text
        .Item("DIR_NO") = txtDirno.Text
        .Item("year_student") = txtYrlvl.Text
        .Item("who_updated") = txtUpdatedBy.Text
    End With    
    dr.Table.AcceptChanges
End Sub