Sharma Hussein Ответов: 1

Я хочу, чтобы ячейка datagridview была очищена, как текстовое поле, и оставалась сфокусированной


У меня есть datagridview, который содержит 4 столбца Item, Qty, Price, Amount. пользователь должен ввести имя элемента в первую колонку. у меня есть таблица в базе данных, в которой хранятся все имена элементов. таким образом, вставленное имя должно быть проверено, есть ли оно в базе данных или нет. если его нет в базе данных, я хочу, чтобы ячейка была очищена, как текстовое поле, и фокус оставался в этой ячейке. пользователю должно быть разрешено продолжать работу до тех пор, пока он не введет правильное имя элемента... моя самая большая проблема-заставить эту клетку оставаться сосредоточенной
до сих пор я пробовал это

Что я уже пробовал:

Частная суб DataGridView1_CellEndEdit(как byval отправителя как объект, как byval E Как системы.Окна.Формы.DataGridViewCellEventArgs) Обрабатывает DataGridView1. CellEndEdit

соединять()
среда SQL = "выбрать название из продуктов, где название = '" & имя.DataGridView1.Строк(электронная.Параметр rowindex).Клеток(0).Значение.ToString &"' "
objcmd = New SqlCommand(sql, objcon)
OBJDR = objcmd.Метода executereader
Если OBJDR.Читать = Ложь Тогда
"покажите это сообщение
Ящик для сообщений.Show ("имя элемента отсутствует в списке элементов"," ошибка имени элемента", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
- очистить камеру '
Меня.DataGridView1.Строк(электронная.Параметр rowindex).Ячейки (0). Значение = ""
DataGridView1.CurrentCell = DataGridView1.Строк(DataGridView1.CurrentCell.Параметр rowindex).Ячейки (0)
'DataGridView1.Метод Beginedit(Правда)
Выход Из Субмарины
Конец, Если
конец подводной лодки

1 Ответов

Рейтинг:
7

ProgrammingEnthusiast

попробуйте поместить свой код в событие проверки ячейки

Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
       With DataGridView1.Rows(e.RowIndex)
           If e.ColumnIndex = 0 Then
               If Not ItemExists(.Cells(e.ColumnIndex).Value) Then
                   MessageBox.Show("Item Name Is not in the Items list", "Item Name Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                   e.Cancel = True
               End If
           End If
       End With
   End Sub

Function ItemExists(ByVal itemname As String) As Boolean
      Dim bResult As Boolean = True

      connect()
      Sql = "Select ProductName from Products where ProductName = '" & itemname & "' "
      objcmd = New SqlCommand(Sql, objcon)
      OBJDR = objcmd.ExecuteReader
      If OBJDR.Read = False Then
          bResult = False
      End If

      Return bResult
  End Function


Sharma Hussein

Никаких ошибок,и все работает. Спасибо за подсказку, запомню это на будущее. Спасибо.