Как использовать флажок DataGridView в событии Выбора изменения в выпадающем списке?

#vb.net

Вопрос:

  • Я хочу создать проект мобильного телефона в VB.net 2019 год. Где модель мобильного телефона в выпадающем списке взята из базы данных. Я прикрепил представление datagrid, в котором отображается номер IMEI мобильного телефона. Прикрепленный флажок в представлении Datagridview. Проблема в том, что когда я иду менять номер модели мобильного телефона в событии изменения комбинации, к каждому изменению в Datagridview добавляется новый флажок.
  • Я создал поле поиска, чтобы легко находить номера IEMI в текстовом поле. Когда я ищу номер IEMI в поле поиска в представлении данных и устанавливаю флажок «Представление данных» и ищу следующий номер, предыдущий не отмечен

Я молюсь о помощи опытных.

 Sub display_data()     
    con.Open()
    Dim cmd As New SqlCommand("select Product_Name, IMEI_No,qty from tbl_Stock where Company_Name=@d1 and Product_Name =@d2", con)
    cmd.Parameters.Add("@d1", SqlDbType.NVarChar).Value = cmb_cmp.Text
    cmd.Parameters.Add("@d2", SqlDbType.NVarChar).Value = cmb_pro.Text
    Dim da As New SqlDataAdapter(cmd)
    Dim dt As New DataTable
    dt.Clear()
    da.Fill(dt)
    DataGridView1.DataSource = dt
   con.Close()
    Dim chakbox As New DataGridViewCheckBoxColumn
    chakbox.Width = 60
    chakbox.Name = "checkbox"
    DataGridView1.Columns.Insert(0, chakbox)
End Sub

Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmb_pro.SelectedIndexChanged
 
    con.Open()
    Dim strsql As New SqlCommand("Select * from tbl_pro where Product_name=@d1", con)
    strsql.Parameters.Add("@d1", SqlDbType.NVarChar).Value = cmb_pro.Text
    Dim myreader As SqlClient.SqlDataReader = strsql.ExecuteReader
    While myreader.Read
        txt_sal_rt.Text = myreader.GetDecimal("sale_rate")
        txt_pro_cod.Text = myreader.GetString("product_code")
        txt_pur_rt.Text = myreader.GetDecimal("Purchase_rate")
    End While
    con.Close()

    display_data()
End Sub

Private Sub txt_serch_KeyUp(sender As Object, e As KeyEventArgs) Handles txt_serch.KeyUp
    DataGridView1.DataSource = searech()
End Sub

Private Function searech() As DataTable
    Dim cmd As New SqlCommand("select Product_Name, IME_No,qty from tbl_Stock where Company_Name=@d1 and IME_NO Like '%'  @d2   '%'", con)

    cmd.Parameters.Add("@d1", SqlDbType.NVarChar).Value = cmb_cmp.Text
    cmd.Parameters.Add("@d2", SqlDbType.VarChar).Value = txt_serch.Text

    Dim da As New SqlDataAdapter(cmd)

    Dim dt As New DataTable
    da.Fill(dt)

    Return dt
End Function
 

Комментарии:

1. Неясно, чего вы пытаетесь достичь. Добавление некоторых изображений может оказаться полезным.

2. Эта строка dataGridView1.Столбцы. Вставка(0, chakbox) добавляет новый столбец при каждом выполнении.

Ответ №1:

Просто поместите bool в свой запрос, выбросьте код «добавить флажок в сетку».

 
Sub display_data()     
    con.Open()
    Dim cmd As New SqlCommand("select CAST(0 as BIT) as checkbox, Product_Name, IMEI_No,qty from tbl_Stock where Company_Name=@d1 and Product_Name =@d2", con)
    cmd.Parameters.Add("@d1", SqlDbType.NVarChar).Value = cmb_cmp.Text
    cmd.Parameters.Add("@d2", SqlDbType.NVarChar).Value = cmb_pro.Text
    Dim da As New SqlDataAdapter(cmd)
    Dim dt As New DataTable
    dt.Clear()
    da.Fill(dt)
    DataGridView1.DataSource = dt
   con.Close()

End Sub