请教如何修改DataGrid中的数据?

时间:2022-10-16 19:52:04
有关如何修改DataGrid中的数据,我有下面几个问题:
      1.DataGrid中有好几列,如何在一行中选中任一字段就自动选中整行?
      2.我根据选中行的什么信息来查找数据库,从而得到数据库中相对应的数据?
      3.在数据库中找到对应数据后又怎么更新该选中行?
    我正在做的东西是这样的:在DataGrid中选中要修改的数据,单击修改按钮,调出另一个窗体,该窗体上包含刚才选中行的所有数据,然后在该窗体上修改,改完后单击保存按钮,将改后的数据保存到数据库,同时更新DataGrid中选中的那行。
    请各位大侠指点。

10 个解决方案

#1


dim str as string =DataGrid1.item(DataGrid1.CurrentitemRow,0)'获取当前选中行第一列的值.
然后你再去用这个值查询,修改你数据库的那个记录
然后再把DataGrid重新显示一下就可以了

#2


如果凭第一列的值去查数据库,有可能出现第一列的值相同而其他列的值不同的多行数据怎么办?

#3


对于你的第一行,你肯定要有一个唯一的关键字任标记
或者,由几列能肯定唯一性也行
你可以最到很多列值

#4


把你的数据主键也绑到datagrid中,如果显示效果不好,可以把主键那列设为不可见,查询查主键那个单元格的值就可以

#5


楼上的好办法!不过我得给我的数据表增加一个字段,用于保证每行数据的唯一性。

#6


#7


copico(苦涩(一路向北)): 
你上面给的代码dim str as string =DataGrid1.item(DataGrid1.CurrentitemRow,0)
它提示说CurrentitemRow不是System.Windows.Forms.DataGrid的成员,正确的VB.NET代码应该是什么?

#8


DataGrid1.Item(DataGrid1.CurrentRowIndex, 0)

#9


copico(苦涩(一路向北)): 
系统提示:dr = Me.DsMoneyInOut1.Tables("收支记录表").Select(strFilter)这句有错,不知错在哪里,指点一下,谢谢!代码的大致意思是从DataGrid中一行第一列的值到数据库查出对应行数据赋值给另一个窗体的各个框。

Dim str As String = DataGrid1.Item(DataGrid1.CurrentRowIndex, 0)
Dim dr() As DataRow
Dim strFilter As String
strFilter = "用户名 = '" & str.Trim() & "'"
dr = Me.DsMoneyInOut1.Tables("收支记录表").Select(strFilter)

If dr.Length < 1 Then
      MessageBox.Show("数据库中没有该记录!", "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
      Dim frmAI As New frmAddIncome
      frmAI.txtOnly.Text = dr(0)(0)
      frmAI.DateTimePicker1.Value = dr(0)(1)
      frmAI.cmbIncomeSort.Text = dr(0)(2)
      frmAI.txtPersonnel.Text = dr(0)(6)
      If dr(0)(5) = "" Then
         frmAI.txtMoney.Text = dr(0)(4)
      Else
         frmAI.txtMoney.Text = dr(0)(5)
      End If
      frmAI.RichTextBox1.Text = dr(0)(3)
      frmAI.ShowDialog()
End If

#10


大侠帮帮忙啊,楼上这个问题,急等!谢谢!

#1


dim str as string =DataGrid1.item(DataGrid1.CurrentitemRow,0)'获取当前选中行第一列的值.
然后你再去用这个值查询,修改你数据库的那个记录
然后再把DataGrid重新显示一下就可以了

#2


如果凭第一列的值去查数据库,有可能出现第一列的值相同而其他列的值不同的多行数据怎么办?

#3


对于你的第一行,你肯定要有一个唯一的关键字任标记
或者,由几列能肯定唯一性也行
你可以最到很多列值

#4


把你的数据主键也绑到datagrid中,如果显示效果不好,可以把主键那列设为不可见,查询查主键那个单元格的值就可以

#5


楼上的好办法!不过我得给我的数据表增加一个字段,用于保证每行数据的唯一性。

#6


#7


copico(苦涩(一路向北)): 
你上面给的代码dim str as string =DataGrid1.item(DataGrid1.CurrentitemRow,0)
它提示说CurrentitemRow不是System.Windows.Forms.DataGrid的成员,正确的VB.NET代码应该是什么?

#8


DataGrid1.Item(DataGrid1.CurrentRowIndex, 0)

#9


copico(苦涩(一路向北)): 
系统提示:dr = Me.DsMoneyInOut1.Tables("收支记录表").Select(strFilter)这句有错,不知错在哪里,指点一下,谢谢!代码的大致意思是从DataGrid中一行第一列的值到数据库查出对应行数据赋值给另一个窗体的各个框。

Dim str As String = DataGrid1.Item(DataGrid1.CurrentRowIndex, 0)
Dim dr() As DataRow
Dim strFilter As String
strFilter = "用户名 = '" & str.Trim() & "'"
dr = Me.DsMoneyInOut1.Tables("收支记录表").Select(strFilter)

If dr.Length < 1 Then
      MessageBox.Show("数据库中没有该记录!", "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
      Dim frmAI As New frmAddIncome
      frmAI.txtOnly.Text = dr(0)(0)
      frmAI.DateTimePicker1.Value = dr(0)(1)
      frmAI.cmbIncomeSort.Text = dr(0)(2)
      frmAI.txtPersonnel.Text = dr(0)(6)
      If dr(0)(5) = "" Then
         frmAI.txtMoney.Text = dr(0)(4)
      Else
         frmAI.txtMoney.Text = dr(0)(5)
      End If
      frmAI.RichTextBox1.Text = dr(0)(3)
      frmAI.ShowDialog()
End If

#10


大侠帮帮忙啊,楼上这个问题,急等!谢谢!