【问题标题】:How to get column ("id") value from datagridview with visual basic .net如何使用visual basic .net从datagridview获取列(“id”)值
【发布时间】:2016-07-12 13:45:47
【问题描述】:

我有一个显示数据库数据的数据网格视图。在每一行上,我都添加了一个带有文本值“批准”的按钮。当用户单击该按钮时,我希望将数据库上的已批准列从 0 更改为 1。我的问题是我如何知道单击了哪一行上的哪个按钮。比如,"UPDATE request SET approved=1 WHERE ID=???"。而且我不想向用户显示 datagridview 上的自动增量 ID 列。

【问题讨论】:

  • DataGridView 上的列可以设置为“隐藏”stackoverflow.com/questions/15090093/…
  • 是的,我知道如何隐藏它们。我想要的是,在不向用户显示 ID 列的情况下获取所选列的 ID 值。
  • 那我不明白。如果 ID 列被隐藏,您的用户将看不到它。我有什么不明白的?
  • 仅仅因为它们没有显示并不意味着它们不存在。
  • @Steve ID 列将从数据库中获取,但在代码中使用而不是向用户显示。

标签: vb.net datagridview


【解决方案1】:

这应该给你一个大致的想法。它使用 SQLite,但您可以子任何数据库。我还为 DGV 使用了通用索引列名称。当然,您也可以省略确认对话框。

Private Sub Mydgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Mydgv.CellContentClick
    If TypeOf DirectCast(sender, DataGridView).Columns(e.ColumnIndex) Is DataGridViewButtonColumn AndAlso e.RowIndex >= 0 Then
        Select Case e.ColumnIndex
            Case Mydgv.Columns("ApproveButton_Col_Name").Index
                Dim dr As DialogResult = MessageBox.Show("Are you sure you want to approve this?", "Confirm Approval", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If dr = Windows.Forms.DialogResult.Yes Then
                    Dim cmd As SQLiteCommand = conData.CreateCommand
                    cmd.CommandText = "Update request set Approved = 1 WHERE ID = " & CInt(Mydgv.Rows(e.RowIndex).Cells("MyIndex_Col_Name").Value)
                    Dim rst As Integer
                    rst = cmd.ExecuteNonQuery()
                    If rst <> 0 Then
                        'success
                    Else
                        'failure
                    End If
                End If
        End Select
    End If

End Sub

【讨论】:

  • 不客气。如果对您有用,请接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多