T Hoecherl
asked on
Identify checkbox.checked = True in a datagridview
I have a datagridview that uses a SQL query as the data source. The last column of the datagridview is a checkbox column. The code to generate the window is this:
Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT ORDER_NUMBER, LINE_NUMBER, QUANTITY, '' AS ADD_WINDOW FROM PCT_PROD_BATCHING WHERE STATUS = 0 ORDER BY ORDER_NUMBER, LINE_NUMBER"
cmd.CommandTimeout = 0
Dim dataAdapter As SqlDataAdapter = New SqlDataAdapter(cmd.Command Text, cn)
dataAdapter.SelectCommand. CommandTim eout = 0
Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dataAdap ter)
Dim table = New DataTable
table.Locale = System.Globalization.Cultu reInfo.Inv ariantCult ure
dataAdapter.SelectCommand. CommandTim eout = 0
dgvAddWindow.AutoGenerateC olumns = False
dgvAddWindow.Columns.Add(N ew DataGridViewTextBoxColumn With {.DataPropertyName = "ORDER_NUMBER", .Name = "Order Number"})
dgvAddWindow.Columns.Add(N ew DataGridViewTextBoxColumn With {.DataPropertyName = "LINE_NUMBER", .Name = "Line Number"})
dgvAddWindow.Columns.Add(N ew DataGridViewTextBoxColumn With {.DataPropertyName = "QUANTITY", .Name = "Quantity"})
dgvAddWindow.Columns.Add(N ew DataGridViewCheckBoxColumn With {.DataPropertyName = "ADD_WINDOW", .Name = "Add Window"})
dataAdapter.Fill(table)
AddWindowSource.DataSource = table
dgvAddWindow.DataSource = AddWindowSource
After selecting rows by checking the checkboxes, and then clicking a Process button, I need to do two things:
1. Count the number of checkboxes that have been checked.
2. For each checkbox that has been checked, run some other processes.
I know how to run the other processes, but I don't know how to cycle through the rows and see if the DataGridViewCheckBoxColumn is checked. Thanks for your help.
T
Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT ORDER_NUMBER, LINE_NUMBER, QUANTITY, '' AS ADD_WINDOW FROM PCT_PROD_BATCHING WHERE STATUS = 0 ORDER BY ORDER_NUMBER, LINE_NUMBER"
cmd.CommandTimeout = 0
Dim dataAdapter As SqlDataAdapter = New SqlDataAdapter(cmd.Command
dataAdapter.SelectCommand.
Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dataAdap
Dim table = New DataTable
table.Locale = System.Globalization.Cultu
dataAdapter.SelectCommand.
dgvAddWindow.AutoGenerateC
dgvAddWindow.Columns.Add(N
dgvAddWindow.Columns.Add(N
dgvAddWindow.Columns.Add(N
dgvAddWindow.Columns.Add(N
dataAdapter.Fill(table)
AddWindowSource.DataSource
dgvAddWindow.DataSource = AddWindowSource
After selecting rows by checking the checkboxes, and then clicking a Process button, I need to do two things:
1. Count the number of checkboxes that have been checked.
2. For each checkbox that has been checked, run some other processes.
I know how to run the other processes, but I don't know how to cycle through the rows and see if the DataGridViewCheckBoxColumn
T
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I figured it out. This is what I used:
For i As Integer = 0 To dgvAddWindow.Rows.Count - 2
If dgvAddWindow.Rows(i).Cells (3).Value. ToString() = "" Then
x = x
Else
x = x + 1
End If
Next
Thanks.
T
For i As Integer = 0 To dgvAddWindow.Rows.Count - 2
If dgvAddWindow.Rows(i).Cells
x = x
Else
x = x + 1
End If
Next
Thanks.
T
The reason you got that error was when check box is not selected, the value expected while debugging for that column is 0, only then convert to boolean code shall work for both cases, when checked as well as unchecked. It seems in your current case for checked it is coming as 1,but for unchecked cases it is coming as empty string instead of 0.
ASKER
Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
For Each row As DataGridViewRow In dgvAddWindow.Rows
If Convert.ToBoolean(row.Cell
MsgBox("Checked")
Else
MsgBox("Not Checked")
End If
Next
Exit Sub
If the box is checked, I get the msgbox("Checked"), as expected. But if the box is unchecked I get the attached error.
T
BooleanError.docx