2016-10-28 4 views
-2

텍스트 상자, 단추 및 데이터 격자보기가있는 코드로 작업하고 있습니다. 단추를 누를 때 TextBox의 값이 DataGridView에 없을 때 "데이터 없음"을 표시하려고합니다. 문자열 값이 DataGridView에 있는지 확인하는 방법

이것은

If DataGridView1.Rows.Contains(TextBox1.Text) = False Then 
     MessageBox.Show("Data Not Exist!") 
End If 
+1

안녕하세요, StackOverflow에 오신 것을 환영합니다. 지금까지 뭐 해봤 어? 친절하게 질문에 포함하십시오. 이것은 유감 스럽지만 이것은 _code factory_는 아닙니다. –

+0

죄송합니다, 초보자는 여기에 있습니다. 나는 내 코드를 포함했다 –

+0

모든 열과 모든 행을 검색해야합니까? 또는 특정 열에 대해서만? –

답변

0

당신은 당신은 LINQ 또는 ForLoop

를 사용하거나 쉽게 그것을 할 수있는 모든 행과 열

Dim isFound As Boolean = False 

     For Each row As GridViewRow In DataGridView1.Rows 
      for i As Integer = 0 to DataGridView1.Columns.Count -1 
     If row.Cells[i].Text = TextBox1.text Then 
      isFound = True 
      exit for 
     End If 
      Next 
     Next 


If (isFound) Then 
     MessageBox.Show("Data Exists!") 
Else 
     MessageBox.Show("Data Not Exists!") 
EndIf 
+0

For i As Integer = 0 to DataGridView1.Columns.Count'는 인덱스가 'zero'로 시작하기 때문에 에러가 발생한다. :) –

+0

오른쪽 .. 대답을 업데이트했습니다. –

+0

MAN YOU A GENIOUS! : D 고맙습니다 - 아픈 또 다른 질문을 게시하십시오 ... –

0

을 통해 루프를 필요로 지금까지 내 코드입니다 이 코드는 모두과 일치하며 DataGridView과 일치하며 어느 과 Column 그것은 성냥을 본다.

ForLoop을 사용하면 Column 및 에 대해 루프를 실행해야합니다.

Private Sub SearchUsingForLoop() 
    Dim resultString As String = Nothing 
    For x = 0 To DataGridView1.ColumnCount - 1 
     For y = 0 To DataGridView1.RowCount - 1 
      If DataGridView1.Item(x, y).Value.ToString.ToUpper = txtSearch.Text.ToUpper Then 
       resultString &= " - Column " & x + 1 & " Row " & y + 1 & vbCrLf 
      End If 
     Next 
    Next 
    If resultString <> Nothing Then 
     resultString = txtSearch.Text & " found in : " & vbCrLf & resultString 
    Else 
     resultString = "Data does not exist." 
    End If 
    MsgBox(resultString) 
End Sub 

0DatagridViewRowDatagridViewColumn 시작의 인덱스를 기억하십니까.

이 일을하는 또 다른 방법은 LINQ입니다 :

Private Sub SearchUsingLINQ() 
    Dim resultSet = From dgRow As DataGridViewRow In Me.DataGridView1.Rows, _ 
      dgCell As DataGridViewCell In dgRow.Cells _ 
     Where dgCell.Value.ToString.ToUpper = txtSearch.Text.ToUpper _ 
     Select dgCell 

    Dim resultString As String = Nothing 
    If resultSet.Count > 0 Then 
     resultString = txtSearch.Text & " found in :" & vbCrLf 
     For Each dgCells In resultSet 
      resultString &= " - Column " & dgCells.ColumnIndex + 1 & " Row " & dgCells.RowIndex + 1 & vbCrLf 
     Next 
    End If 

    If resultString <> Nothing Then 
     MsgBox(resultString) 
    Else 
     MsgBox("Data does not exist.") 
    End If 
End Sub 

그 중 하나를 사용하여 주시기 바랍니다. 하지만 먼저 iteratingDataGridView으로 공부하시는 것이 좋습니다.