2014-11-26 3 views
2

두 gridview 사이를 비교해야하는 프로그램으로 작업하고 있습니다.두 gridview를 비교하고 내부 데이터 순서를 무시하는 방법

그래서, 나는

column 1 | column 2 | column 3 
     a |  d |  g 
     b |  e |  h 
     c |  f |  j 

두 번째 gridview에 데이터가 데이터베이스에서 검색하고,이 gridview에

첫 번째 GRIDVIEW 내가 수동으로 추가 데이터를 가지고 있습니다.

column 1 | column 3 | column 2 
     a |  g |  d 
     b |  h |  e 
     c |  j |  f 

또는 다음과 같이 될 수있다 : 예 검색 결과는 다음과 같다 한마디로

Protected Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click 
    sql = txtQuery.Text 
    cmd = New SqlCommand(sql, con) 
    drDataReader = cmd.ExecuteReader 
    dtDatatable.Load(drDataReader) 
    GridView1.DataSource = dtDatatable 
    GridView1.DataBind() 
    GridView1.Visible = True 
End Sub 

: 나는 데이터베이스에서 데이터를 검색하기 위해이 코드를 사용

column 2 | column 1 | column 3 
     d |  a |  g 
     e |  b |  h 
     f |  c |  j 

두 번째 gridview는 txtQuery.text의 사용자 입력에 따라 달라 지므로 gridview를 비교하고 TRUE 또는 FALSE인지 확인합니다. 위의 표와 같이 데이터 순서와 관련없이 결과가 동일하다면 true를 표시하고 틀리면 false를 표시합니다.

EDITED : 배열에 gridview 값을 저장하고 배열을 비교하려고했습니다. 비교는 arraylist2에있는 모든 데이터가 arraylist1에 존재하는지, 그리고 arraylist1의 데이터가 arraylist2에 존재 하는지를 확인하는 것이다. 이 코드를 사용하여 첫 번째 비교를 시도했지만 작동하지 않는 것 같습니다.

Protected Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click 
    Dim arrayList1 As ArrayList = New ArrayList() 
    Dim arrayList2 As ArrayList = New ArrayList() 
    Dim arrayList3 As ArrayList = New ArrayList() 
    Dim a As Integer 
    Dim b As Integer 
    For a = 0 To GridView1.Rows.Count - 1 Step 1 
     For b = 0 To GridView1.Columns.Count - 1 Step 1 
      arrayList1.Add(GridView1.Rows(a).Cells(b).Text) 
     Next 
    Next 

    Dim c As Integer 
    Dim d As Integer 
    For c = 0 To GridView2.Rows.Count - 1 Step 1 
     For d = 0 To GridView2.Columns.Count - 1 Step 1 
      arrayList2.Add(GridView2.Rows(c).Cells(d).Text) 
     Next 
    Next 

    If Not arrayList2.Contains(arrayList1) Then 
     MsgBox("True") 
    Else 
     MsgBox("False") 
    End If 

이유는 모르지만 위의 코드는 항상 "TRUE"로 표시됩니다.

코드에 문제가 있습니까? 난 각 행에 대한 문자열 대신 행 번호를 읽는 것 같아요.

미리 감사드립니다.

arrayList2.Contains(arrayList1) 

(가)() 방법은 하나의 값만을보고 포함

+0

직접적인 해결책 : gridviews의 데이터 소스 인 데이터 테이블의 데이터를 비교하십시오. 원하는 경우 행/열 또는 LINQ를 반복하면됩니다. –

+0

전 LINQ를 사용하지 않습니다. LINQ를 대신 사용하는 것이 더 쉬운가요? –

+0

을 비교하면이 솔루션을 살펴볼 수 있습니다. http://stackoverflow.com/questions/26083931/find-duplicats-and-display-in-new-datagridview/26090833#26090833 물론 복사본이 없으면 꽤 유사해야합니다. – Nocturnal

답변

1

오차는이다. 가치의 전체 목록을위한 것이 아닙니다.

+0

감사합니다 Olivier .... gridview2.column.count가 0이기 때문에 arraylist2는 항상 비어 있습니다. 코드를 조금 변경하면 문제가 해결됩니다. 어쨌든, 제안 주셔서 감사합니다, 정말 고맙 네요. –

관련 문제