добрый день. В DataGridView помещены 2 комбобокса, в зависимости от выбора значений в каждом из них должны изменяться данные в DataGridView.
1. Если щелкнуть 2 раза подряд на один на комбобокс ,находящийся в 8 столбце, возникает исключение NullRefrenceЕxception не обработно, причем при отладке не останавливается ни на одной строчке кода. Как исправить?
2. Корректировка данных в других столбцах не сохраняется на той строке, где находится комбобокс, при переходе туда-сюда по строкам -тогда сохраняется. Что тут можно сделать?
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Private Sub Control_Changed(ByVal sender As Object, ByVal e As System.EventArgs)
Dim col As Integer = DataGridView1.CurrentCell.ColumnIndex
Dim row As Integer = DataGridView1.CurrentCell.RowIndex
If col = 8 Then
Dim i As Integer = (DirectCast(sender, ComboBox)).SelectedIndex
Select Case i
Case 0
DataGridView1.Rows(row).Cells("Date_def").Value = Convert.DBNull
Case 1
DataGridView1.Rows(row).Cells("Date_def").Value = Mid(Now.Date, 1, 10)
Case 2
DataGridView1.Rows(row).Cells("Date_def").Value = Mid(Now.Date, 1, 10)
‘ Me.Mk_uzk_zaklTableAdapter.Update(Me.Mk_uzk_zakl._mk_uzk_zakl)
strSQLq = "insert into mk_zakl (id_rec_uzk,shov,vol) VALUES (" + "'" + Me.Tid_rec.Text + "','" + DataGridView1.Rows(row).Cells("Shov").Value + "')"
pp_myCommand = New SqlClient.SqlCommand(strSQLq, pp_conn)
pp_myCommand.Connection.Open()
pp_myCommand.ExecuteNonQuery()
pp_myCommand.Connection.Close()
Me.Mk_uzk_zaklTableAdapter.FillBy(Me.Mk_uzk_zakl._mk_uzk_zakl, id_rec_uzk:=Me.Tid_rec.Text)
Me.DataGridView1.Update()
End Select
End If
End Sub
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Dim cell As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)
If TypeOf cell Is DataGridViewCheckBoxCell Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString = "1" Then
DataGridView1.Rows(e.RowIndex).Cells("date_kont").Value = Mid(Now.Date, 1, 10)
Else
DataGridView1.Rows(e.RowIndex).Cells("date_kont").Value = Convert.DBNull
End If
End If
End Sub
Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End Sub
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
If DataGridView1.CurrentCell.ColumnIndex = 8 Then
Dim combo As ComboBox = TryCast(e.Control, ComboBox)
Dim cb As New ComboBox()
AddHandler combo.SelectedValueChanged, AddressOf Control_Changed
AddHandler combo.SelectedIndexChanged, AddressOf Control_Changed
End If
End Sub