2016-07-12 14 views
0

データベースのデータを表示するdatagridviewがあります。すべての行で、私はテキスト値 "承認"ボタンを追加しました。ユーザーがそのボタンをクリックすると、データベースの承認された列が0から1に変更されます。私の質問はどの行のどのボタンがクリックされたかをどのように知っているかです。 like、"UPDATE request SET approved=1 WHERE ID=???"。私は、ユーザーにdatagridviewの自動インクリメントID列を表示したくないです。Visual Basicでdatagridviewからカラム( "id")値を取得する方法

+0

のDataGridViewの列は、はいhttp://stackoverflow.com/questions/15090093/how-can-i-hide-a-specific-column-form-a-datagridview – Steve

+0

'隠れた' 作ることができます私はそれらを隠す方法を知っています。 ID列をユーザーに表示せずに、選択した列のID値を取得することができます。 – ufancha

+0

私はそれを取得しません。 ID列が非表示の場合、ユーザーはそれを見ることができません。私は何を理解していないのですか? – Steve

答えて

0

これはあなたに一般的な考えを与えるはずです。それはSQLiteを使用していますが、任意のdbの下位にすることができますまた、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 
+0

それは素晴らしいです。ありがとうございます – ufancha

+0

ようこそ。それがあなたのために働く場合、答えを受け入れてください。 – topshot

関連する問題