Avatar of T Hoecherl
T HoecherlFlag for United States of America

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.CommandText, cn)
        dataAdapter.SelectCommand.CommandTimeout = 0
        Dim builder As SqlCommandBuilder = New SqlCommandBuilder(dataAdapter)
        Dim table = New DataTable
        table.Locale = System.Globalization.CultureInfo.InvariantCulture
        dataAdapter.SelectCommand.CommandTimeout = 0
        dgvAddWindow.AutoGenerateColumns = False


        dgvAddWindow.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "ORDER_NUMBER", .Name = "Order Number"})
        dgvAddWindow.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "LINE_NUMBER", .Name = "Line Number"})
        dgvAddWindow.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "QUANTITY", .Name = "Quantity"})
        dgvAddWindow.Columns.Add(New 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
Visual Basic.NET

Avatar of undefined
Last Comment
Karrtik Iyer
ASKER CERTIFIED SOLUTION
Avatar of Karrtik Iyer
Karrtik Iyer
Flag of India image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of T Hoecherl
T Hoecherl
Flag of United States of America image

ASKER

This is what I have for testing:

    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.Cells("Add Window").Value) = True Then
                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
Avatar of T Hoecherl
T Hoecherl
Flag of United States of America image

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
Avatar of Karrtik Iyer
Karrtik Iyer
Flag of India image

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.
Visual Basic.NET
Visual Basic.NET

Visual Basic .NET (VB.NET) is an object-oriented programming language implemented on the .NET framework, but also supported on other platforms such as Mono and Silverlight. Microsoft launched VB.NET as the successor to the Visual Basic language. Though it is similar in syntax to Visual Basic pre-2002, it is not the same technology,

96K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo