2016-08-08 2 views
0

나는 Item, Qty, Price, Amount의 4 개의 열을 가진 Datagridview를 가지고있다. 사용자는 첫 번째 열에 항목 이름을 입력해야합니다. 나는 데이터베이스에 모든 항목 이름이 저장되어있는 테이블을 가지고 있습니다. 삽입 된 이름은 데이터베이스에 있는지 확인해야합니다. 데이터베이스에없는 경우 TextBox처럼 셀을 지우고 포커스가 해당 셀에 남아 있기를 원합니다. 사용자가 지금까지 내가 여기나는 데이터 그 리드 셀을 지우고 초점을 유지하기를 원한다.

Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit 

     connect() 
     sql = "Select ProductName from Products where ProductName = '" & Me.DataGridView1.Rows(e.RowIndex).Cells(0).Value.ToString & "' " 
     objcmd = New SqlCommand(sql, objcon) 
     OBJDR = objcmd.ExecuteReader 
     If OBJDR.Read = False Then 
      MessageBox.Show("Item Name Is not in the Items list", "Item Name Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
        ''clearing the cell '  
      Me.DataGridView1.Rows(e.RowIndex).Cells(0).Value = "" 
      '' here i want the cell to get foucus and the cursor remain like textbox 
      DataGridView1.CurrentCell = DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(0) 
      ' DataGridView1.BeginEdit(True) 
      Exit Sub 
     End If 
End Sub 

을 시도 ... 그는 올바른 항목 이름을 입력 할 때까지 계속하도록 허용해서는 안 내 DataGridView에 datagridview1

datagridview2

이의 이미지입니다 그가 입력 할 때 사용자에게 표시되는 DataGridview입니다. 항목 이름을 it.it에서 선택하면 ComboBox AutoComplete처럼 작동합니다.

+0

대신 모든 항목의 정확한 이름을 알 수있는 사용자의 기대에 코드를 넣어? 그렇게하면 잘못된 항목을 선택할 수 없습니다. – Plutonix

+0

예제가 컴파일되지 않습니다. 당신은 여분의'End If'를 가지고 있습니다. – djv

+0

정확한 이름을 알기를 기대하지 않습니다. 내가 나타납니다 datagridview 언급하고 해당 셀에있는 사용자 형식으로 모든 항목의 이름을 표시하는 것을 잊지. 그가 입력 할 때 항목을 제안합니다. 그는 그 datagridview에서 그것을 클릭함으로써 선택할 수 있습니다. 그러면 datagridview가 보이지 않게되거나 정확한 항목 이름을 쓸 수 있습니다. 그러나 그가 그것 또는 ent에서 하나를 골라 내지 않으면 어떨까요. 셀의 내용을 지우고 셀의 초점을 유지하고 싶습니다 –

답변

0

마침내 나는 내가 원하는 것을 얻었습니다. 내가 왜 열 그들은에서 항목을 선택 콤보 상자 열을하지, 세포 검증 이벤트

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 
관련 문제