Ich habe eine Datagridview, die Daten aus der Datenbank anzeigt. In jeder Zeile habe ich eine Schaltfläche mit dem Textwert "Approve" hinzugefügt. Wenn der Benutzer auf diese Schaltfläche klickt, möchte ich, dass die genehmigte Spalte in der Datenbank von 0 auf 1 geändert wird. Meine Frage ist, woher weiß ich, auf welche Schaltfläche in welcher Zeile geklickt wird. wie, "UPDATE request SET approved=1 WHERE ID=???"
. und ich möchte die Auto-Inkrement-ID-Spalte in der Datagridview für den Benutzer nicht anzeigen.Wie bekomme ich Spalte ("ID") Wert von Datagridview mit Visual Basic. NET
0
A
Antwort
0
Dies sollte Ihnen eine allgemeine Idee geben. Es verwendet SQLite, aber Sie können jede beliebige Datenbank sub. Ich habe auch einen generischen Indexspaltennamen für den DGV verwendet. Sie können natürlich auch den Bestätigungsdialog weglassen.
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
Spalten auf der Datagridview könnte ‚versteckte‘ http://stackoverflow.com/questions/15090093/how-can-i-hide-a-specific-column-form-a-datagridview – Steve
ja gemacht werden, Ich kann sie verstecken. Was ich will, ist, den ID-Wert der ausgewählten Spalte zu erhalten, ohne die ID-Spalte für den Benutzer anzuzeigen. – ufancha
Ich verstehe es dann nicht. Wenn die ID-Spalte ausgeblendet ist, kann Ihr Benutzer sie nicht sehen. Was habe ich nicht verstanden? – Steve