Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 комбобокс в DataGridView  [new]
Voevoda-Moroz
Member

Откуда:
Сообщений: 11
добрый день. В DataGridView помещены 2 комбобокса, в зависимости от выбора значений в каждом из них должны изменяться данные в DataGridView.
1. Если щелкнуть 2 раза подряд на один на комбобокс ,находящийся в 8 столбце, возникает исключение NullRefrenceЕxception не обработно, причем при отладке не останавливается ни на одной строчке кода. Как исправить?
2. Корректировка данных в других столбцах не сохраняется на той строке, где находится комбобокс, при переходе туда-сюда по строкам -тогда сохраняется. Что тут можно сделать?
    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
26 авг 21, 10:27    [22364176]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить