简体   繁体   中英

Resetting Datagridview combo box data at runtime

I am creating grid on form load event. Initially I am setting some values in datagridview combobox as :

Dim dgvc As DataGridViewComboBoxCell

datagrigview1.Rows(0).Cells("Column1").Value = txtColumn1.Text \\setting selected item
datagrigview1.Rows(0).Cells("Column1").Value = txtColumn2.Text

dgvc = datagrigview1.Rows(0).Cells("Column1").Value
dgvc.Items.Add((" ")) \\adding blank
dgvc.Items.Add(txtColumn1.Text) \\then required value
dgvc = datagrigview1.Rows(0).Cells("Column1").Value
dgvc.Items.Add((" "))
dgvc.Items.Add(txtColumn2.Text)

Now when user clicks on particular combobox.I am setting new values in it as :

// Resetting old values
If IsDBNull(dgvc) = False Then
  dgvc.DataSource = Nothing
  dgvc.Items.Clear()
End If
If DtTable.Rows.Count > 0 Then
  Dim k As Integer
  Dim dgvc1 As DataGridViewComboBoxCell
  dgvc1 = New DataGridViewComboBoxCell()
  For k = 0 To DtTable.Rows.Count - 1
     If DtItemCd.Rows(k)("ItemCd").ToString <> Current_Code Then

     datagrigview1.Rows(e.RowIndex).Cells("Column1").Value = DtTable.Rows(k)("Column1").ToString
     dgvc1 = datagrigview1.Rows(e.RowIndex).Cells("Column1")
     dgvc1.Items.Add(DtTable.Rows(k)("Column1").ToString)

     datagrigview1.Rows(e.RowIndex).Cells("Column2").Value = DtTable.Rows(k)("Column2").ToString
     dgvc1 = datagrigview1.Rows(e.RowIndex).Cells("Column2")
     dgvc1.Items.Add(DtTable.Rows(k)("Column2").ToString)

    End If
  Next
End If

This shows both old and new records.Please help.

Probably your code here

If IsDBNull(dgvc) = False Then 

is testing if the DataGridViewComboBoxCell is Null not if it's DataSource is null.
Hence it never enters the condional code below.

Could you try to change in this way and see if now you enter in the if condition?

If IsDBNull(dgvc.DataSource) = False Then 

I got below solution :

If IsDBNull(dgvc) = False Then
   dgvc.Items.Clear()
   dgvc.DataSource = Nothing
   dgvc = dgvSO.Rows(e.RowIndex).Cells("Column1")
   dgvc.Items.Remove(" ")
   dgvc.Items.Remove(Current_Code)

End If

这有效

cb.SelectedItem = Nothing

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM