-1

我使用 VS 2008 和 VB.NET 作为语言。我有两个网格。在一个网格中,ii 有用户的数据。例如手机号码、电子邮件和其他信息。在第二个网格中,我已经添加了一些警报。

我需要在警报网格视图的每一行中附加两个复选框列。单击该复选框后,将执行特定的数据库操作。

目前,我在 datagridview 中添加了复选框,但无法选中/取消选中它们。

请帮助我解决选中/取消选中问题,并提示我执行复选框单击的数据库操作。

这就是我在datagridview中添加复选框的方式

Dim email As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn(True)
Dim sms As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn(True)

email.HeaderText = "Email"
email.ReadOnly = False
sms.HeaderText = "SMS"
sms.ReadOnly = False

UserAlarmDataGridView.Columns.Add(email)

UserAlarmDataGridView.Columns.Add(sms)

我试图将列的 readonly 属性设置为 false,但它不起作用。

4

2 回答 2

0

检查以下代码

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim AlarmColumn1 As New DataGridViewCheckBoxColumn(True)
    Dim AlarmColumn2 As New DataGridViewCheckBoxColumn(True)

    AlarmColumn1.Name = "Alarm1"
    AlarmColumn1.HeaderText = "Email"
    AlarmColumn1.ReadOnly = False

    AlarmColumn2.Name = "Alarm2"
    AlarmColumn2.HeaderText = "SMS"
    AlarmColumn2.ReadOnly = False

    UserAlarmDataGridView.Columns.Add(AlarmColumn1)
    UserAlarmDataGridView.Columns.Add(AlarmColumn2)
    UserAlarmDataGridView.ReadOnly = False
End Sub

要基于 CheckBox 单击进行数据库操作,请使用以下命令

Private Sub UserAlarmDataGridView_CellContentClick(sender As Object, _
    e As System.Windows.Forms.DataGridViewCellEventArgs) Handles UserAlarmDataGridView.CellContentClick

    Dim ColumnName1 As String = UserAlarmDataGridView.Columns(e.ColumnIndex).Name

    If ColumnName1 = "Alarm1" Or ColumnName1 = "Alarm2" Then
        Dim CellCheckBox1 As DataGridViewCheckBoxCell = _
            CType(UserAlarmDataGridView.Rows(e.RowIndex).Cells(ColumnName1), DataGridViewCheckBoxCell)

        Dim CellCheckBoxState1 As String = CellCheckBox1.EditingCellFormattedValue.ToString

        MsgBox("Row = " & CellCheckBox1.RowIndex & vbCrLf & _
               "Column = " & CellCheckBox1.ColumnIndex & vbCrLf & _
               "State = " & CellCheckBoxState1)
    End If
End Sub
于 2013-07-13T10:38:58.900 回答
0

捕获复选框状态值的更好方法....

If CBool(DG1.Rows(e.RowIndex).Cells(clmChecked.Index).Value) Then
    'checked
Else
    'Not checked
End if
于 2018-02-19T16:53:35.177 回答