2016-07-19 5 views
0

Ich habe zZ zwei gridviews, der von der SQL Verbindung kommt, der andere kommt von einer OLEDB2 Verbindung. Ich kann diese Rasteransichten durchlaufen und prüfen, ob das eine Werte enthält, die das andere nicht enthält.Wie man Werte von einer Gridview zieht und sie in eine andere Gridview einfügt asp vb

Meine Frage ist eine Möglichkeit, dass wenn ich diese Werte finde, ich sie in eine abschließende Gridview setzen kann, um die gemeinsamen Werte zwischen den anderen beiden Gridviews zu zeigen?

danke für Ihre Hilfe im Voraus, das ist, was ich bisher habe.

Puclic Sub CompareDB() 
    Dim missingRecords As New DataTable 
    missingRecords = GridView1.DataSource.clone() 
    GridView3.DataSource = missingRecords 
    GridView3.DataBind() 

    Dim V1 As String = "" 
    Dim V2 As String = "" 
    Dim msg As String = "" 
    Dim check As Boolean = False 
    For Each row As GridViewRow In GridView2.Rows 
     check = False 
     For Each rw As GridViewRow In GridView1.Rows 

      V1 = row.Cells(0).Text 
      V2 = rw.Cells(0).Text 

      V2 = Replace(V2, " ", "") 
      If V1 = V2 Then 
       check = True 
       ' if check is true 
       ' insert the value V1 and V2 into GridView 3 

       Exit For 
      End If 
     Next 
     If check = False Then 
      msg = msg & V1 & " -999 " 
     End If 
    Next 
    msg = msg & "------------------------------------------------------------------ -999 " 
    For Each row As GridViewRow In GridView1.Rows 
     check = False 
     For Each rw As GridViewRow In GridView2.Rows 

      V1 = row.Cells(0).Text 
      V2 = rw.Cells(0).Text 

      V1 = Replace(V1, " ", "") 
      If V1 = V2 Then 
       check = True 
       Exit For 
      End If 
     Next 
     If check = False Then 
      msg = msg & V1 & " -999 " 
     End If 
    Next 
    ' after all checks complete, inserts the the non common values 
    ' into gridview3 
    ' EXAMPLE: GridView3 
    ' gridview1 | gridview2 
    ' v1  | V2 
    ' v1  | V2 
    ' non common| 
    '   | non common 

    msg = Replace(msg, "-999", "<br />") 



    ' used to output for testing 
    Label1.Text = msg 
End Sub` 
+1

Sie können LINQ verwenden, um die beiden Datensätze zu vergleichen. Erstellen Sie einen neuen Datensatz, um die neue Gridview mit dem neuen Datensatz zu füllen. – Kami

Antwort

0

Ich habe es ausgearbeitet. posten die Lösung für mein Problem unten.

Public Sub compareDBs() 

    Dim dt As New DataTable 

    dt.Columns.Add("FromPARC", Type.GetType("System.String")) 
    dt.Columns.Add("FromJDE", Type.GetType("System.String")) 
    Dim myrow As DataRow 

    Dim V1 As String = "" 
    Dim V2 As String = "" 
    Dim msg As String = "" 
    Dim check As Boolean = False 

    For Each row As GridViewRow In GridView2.Rows 
     check = False 
     For Each rw As GridViewRow In GridView1.Rows 
      V1 = row.Cells(0).Text 
      V2 = rw.Cells(0).Text 
      V2 = Replace(V2, " ", "") 
      If V1 = V2 Then 
       check = True 
       myrow = dt.NewRow 
       myrow("FromPARC") = V1 
       myrow("FromJDE") = V2 
       dt.Rows.Add(myrow) 
       Exit For 
      End If 
     Next 
     If check = False Then 
      myrow = dt.NewRow 
      myrow("FromPARC") = V1 
      dt.Rows.Add(myrow) 
      msg = msg & V1 & " -999 " 
     End If 
    Next 

    msg = msg & "------------------------------------------------------------------ -999 " 
    For Each row As GridViewRow In GridView1.Rows 
     check = False 
     For Each rw As GridViewRow In GridView2.Rows 
      V1 = row.Cells(0).Text 
      V2 = rw.Cells(0).Text 
      V1 = Replace(V1, " ", "") 
      If V1 = V2 Then 
       check = True 
       Exit For 
      End If 
     Next 
     If check = False Then 
      myrow = dt.NewRow 
      myrow("FromJDE") = V1 
      dt.Rows.Add(myrow) 
      msg = msg & V1 & " -999 " 
     End If 
    Next 

    GridView3.DataSource = dt 
    GridView3.DataBind() 

    msg = Replace(msg, "-999", "<br />") 

    ' used to output for testing 
    Label1.Text = msg 
End Sub 
0

Erstellen Sie eine Datentabelle und klonen Sie eine der Rasteransichtsquellen. Fügen Sie dann nach Bedarf Datensätze zur Datentabelle hinzu und legen Sie eine neue Rasteransicht mit der Datenquelle als Tabelle fest. Etwas wie ..

Dim GridView3 as New GridView 
Dim missingRecords as New Datatable 
missingRecords = GridView1.dataSource.Clone() 
'add your records here 
GridView3.dataSource = missingRecords 
GridView3.dataBind() 
+0

danke luke für deine schnelle antwort. Ich habe versucht, was Sie vorgeschlagen haben, aber ich verwende Gridviews nicht Datagridviews. Ich habe das GridView3 bereits in der aspx-Seite deklariert, aber nachdem ich die gridview3.datasource = missingRecords gemacht habe, zeigt die Gridview nichts an. – ag93

+0

Es tut mir leid, ich glaube, Sie brauchen GridView3.dataBind() sowie – Luke

+0

Ich legte es dort, bevor ich den Code lief und immer noch nichts. Ich bearbeitete meinen Beitrag, um den Code für einen besseren Weg zu zeigen, was ich tue – ag93