首页 文章

编辑选定的Datagridview Row vb.Net

提问于
浏览
1

我有一个包含四列的Datagridview网格 . 双击单元格时,所选行上的数据将传递到四个文本框,供用户进行更改(如果有) . 那么如何将更改传递给所选行而不是将更改添加为新行?

附:数据不是来自数据库

2 回答

  • 0

    您可以通过设置模块级变量来"remember" DataGridViewRow ,也可以通过查找其主键再次找到该行 .

    Public Class Form1
      'Add to form:
      ' DataGridView called DataGridView1
      ' 4 Textboxes called TextBox1, TextBox2, TextBox3, and TextBox4
      ' Button called btnEdit
      ' Button called btnSave
    
      Private mintRowWeAreEditing As Integer = -1
      Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click
        If DataGridView1.DataSource Is Nothing Then
          'set initial data
          Dim dtb As New DataTable
          dtb.Columns.Add("Col1")
          dtb.Columns.Add("Col2")
          dtb.Columns.Add("Col3")
          dtb.Columns.Add("Col4")
          dtb.Rows.Add("R1C1", "R1C2", "R1C3", "R1C4")
          dtb.Rows.Add("R2C1", "R2C2", "R2C3", "R2C4")
          dtb.Rows.Add("R3C1", "R3C2", "R3C3", "R3C4")
          dtb.Rows.Add("R4C1", "R4C2", "R4C3", "R4C4")
          DataGridView1.DataSource = dtb
        End If
        'copy data from grid to textboxes
        mintRowWeAreEditing = DataGridView1.CurrentCell.RowIndex
        Dim drw As DataRow = DirectCast(DataGridView1.Rows(mintRowWeAreEditing).DataBoundItem, DataRowView).Row
        TextBox1.Text = drw("Col1").ToString
        TextBox2.Text = drw("Col2").ToString
        TextBox3.Text = drw("Col3").ToString
        TextBox4.Text = drw("Col4").ToString
      End Sub
    
      Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        'copy data from textboxes to grid
        If mintRowWeAreEditing = -1 Then Exit Sub 'haven't clicked Edit button yet
        Dim drw As DataRow = DirectCast(DataGridView1.Rows(mintRowWeAreEditing).DataBoundItem, DataRowView).Row
        drw("Col1") = TextBox1.Text
        drw("Col2") = TextBox2.Text
        drw("Col3") = TextBox3.Text
        drw("Col4") = TextBox4.Text
      End Sub
    End Class
    
  • 1

    因此,例如,您可以在按钮单击事件上执行类似的操作 .

    Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
    
    
      Dim refNo As Integer = txtRefNo.Text     ' Change DataType and TextBox name as appropriate
      Dim firstName as String = txtFName.Text
        ' Repeat setting variables for each field in the row that you're updating
    
      For Each dgr As DataGridViewRow in DataGridView1.Rows
        If dgr.Item("RefNo") = refNo Then
          dgr.Cells(0).Value = firstName 'Instead of using (0) you can use the column name
          dgr.Cells(1).Value = newVar
        End If
      Next
    
     ' Commit the changes/refresh here
    
    End Sub
    

    我没有IDE来测试这个,但任何问题让我知道,我会看看它 .

相关问题