【问题标题】:open selected row in datagridview to edit in Another form在 datagridview 中打开选定行以在另一种形式中进行编辑
【发布时间】:2013-12-10 15:11:30
【问题描述】:

我正在使用 vb.net 设计器连接访问数据库。 在我的 Form1 上,我有一个 DataGridView 和两个用于添加和编辑的按钮 我制作 Form2 以将数据添加到数据库中并且工作正常.. Imake Form3与相同的form2内容 现在我需要当我在 DataGridView 和 Clic 编辑按钮中选择行时,所选行的数据显示在 form3 上以进行编辑

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.SalesTableAdapter.Fill(Me.OrdersDataSet.sales)

    Me.DateTimePicker1.Value = Date.Today
End Sub

Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
    SalesBindingSource.Filter = String.Format("date = '{0}'", DateTimePicker1.Value.ToShortDateString())
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form2.Show()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Form3.Show()
End Sub

Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

End Sub

Private Sub SalesDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles SalesDataGridView.CellContentClick
End Sub
End Class

【问题讨论】:

  • 您的问题是什么?请定义一个明确的问题,以便人们回答。谢谢。
  • 我需要当我在 DataGridView 中选择行并单击编辑按钮时,所选行的数据显示在 form3 上以进行编辑
  • @user3077945 .. 你可以使用 Dgv currentrow 和单元格索引 ..
  • 怎么样?如果这个网站不适合初学者,我很抱歉
  • @user3077945 .. 不,所以适用于所有需要帮助的人 .. 对于您的问题,例如您可以这样做txtbox1.Text = dgv.Rows(CurrentRow).Cells("name").Value

标签: vb.net datagridview edit


【解决方案1】:

您需要以模态/对话的方式处理此问题。 addedit 只需要一个表单。

添加/编辑表单

向表单添加参数化构造函数。

Public Sub New(row As DataRowView)
    Me.InitializeComponent()
    'Me.ctlAge: NumericUpDown control.
    'Me.ctlBirthday: DateTimePicker control.
    'Me.ctlName: TextBox control.
    If (row Is Nothing) Then
        'Add mode, set default values:
        Me.ctlAge.Value = 0
        Me.ctlBirthday.Value = Date.Now
        Me.ctlName.Text = String.Empty
    Else
        'Edit mode, set current values:
        Me.ctlAge.Value = CDec(row.Item("AGE"))
        Me.ctlBirthday.Value = CDate(row.Item("BIRTHDAY"))
        Me.ctlName.Text = CStr(row.Item("NAME"))
    End If
End Sub

您还需要一个接受按钮和一个取消按钮。

Friend Sub btnAcceptClicked(sender As Object, e As EventArgs) Handles btnAccept.Click
    Me.DialogResult = Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

Friend Sub btnCancelClicked(sender As Object, e As EventArgs) Handles btnCancel.Click
    Me.DialogResult = Windows.Forms.DialogResult.Cancel
    Me.Close()
End Sub

主窗体

添加方法:

Private Sub btnAddClicked(sender As Object, e As EventArgs) Handles btnAdd.Click
    Try
        Using f As New AddOrEditForm(CType(Nothing, DataRowView))
            If (f.ShowDialog() = Windows.Forms.DialogResult.OK) Then

                Dim view As DataView = TryCast(Me.SalesDataGridView.DataSource, DataView)

                If (view Is Nothing) Then
                    Throw New InvalidCastException()
                End If

                Dim viewRow As DataRowView = view.AddNew()

                viewRow.EndEdit()
                viewRow.Item("AGE") = f.ctlAge.Value
                viewRow.Item("BIRTHDAY") = f.ctlBirthday.Value
                viewRow.Item("NAME") = f.ctlName.Text
                viewRow.EndEdit()

            End If
        End Using
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

编辑方法:

Private Sub btnEditClicked(sender As Object, e As EventArgs) Handles btnEdit.Click
    Try

        Me.SalesDataGridView.EndEdit()

        If (Me.SalesDataGridView.SelectedRows.Count > 0) Then

            Dim gridRow As DataGridViewRow = Me.SalesDataGridView.SelectedRows(0)
            Dim viewRow As DataRowView = TryCast(gridRow.DataBoundItem, DataRowView)

            If (viewRow Is Nothing) Then
                Throw New InvalidCastException()
            End If

            Using f As New AddOrEditForm(viewRow)
                If (f.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                    viewRow.BeginEdit()
                    Try
                        viewRow.Item("AGE") = f.ctlAge.Value
                        viewRow.Item("BIRTHDAY") = f.ctlBirthday.Value
                        viewRow.Item("NAME") = f.ctlName.Text
                        viewRow.EndEdit()
                    Catch ex As Exception
                        viewRow.CancelEdit()
                        Throw ex
                    End Try
                End If
            End Using

        End If

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多