2016-07-25 6 views
0

ich in der Lage sein wollen, eine Zeile in gridview1 löschen zu löschen, wenn es keine Zeilen in gridview2 sind, die genau die gleichen Werte wie gridview1Wie die Zeilen von zwei Tabellen vergleichen und nur dann, wenn keine passende Zeile

Was sollte hat Ich setze aufRowDeleting?

protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    string strConnString = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; 
    SqlConnection con = new SqlConnection(strConnString); 
    DataTable dt = new DataTable(); 

    using (SqlConnection conn = new SqlConnection(strConnString)) 
    { 


     int selectedRow = e.RowIndex; 

     GridViewRow theRow = GridView1.Rows[selectedRow]; 
     string str = ("Delete TDLoanRate where [email protected]"); 
     SqlCommand insert = new SqlCommand(str, con); 

     insert.Parameters.AddWithValue("@id", Convert.ToInt32(theRow.Cells[0].Text)); 

     using (SqlDataAdapter sda = new SqlDataAdapter()) 
     { 
      insert.Connection = con; 
      con.Open(); 
      sda.SelectCommand = insert; 
      sda.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
+0

Verwenden 'MERGE' SQL-Abfrage und basierend auf dem Abfrageergebnis Ihre Datagridview aktualisieren. [Einfügen, Aktualisieren und Löschen von Daten mit MERGE] (https://technet.microsoft.com/en-us/library/bb522522 (v = sql.105) .aspx) – Fabio

Antwort

0

Nur Zeilen vergleichen? Normalerweise würde ich Dinge wie what have you tried? fragen, aber es ist Montag schlecht genug.

Check this out:

DataGridView dgv = new DataGridView(); 
DataGridView dgv2 = new DataGridView(); 

// Iterate on the rowcount 
for (int i = 0; i < dgv.RowCount; i++) 
{ 
    // Compare each row and count occurences. 
    int occurs = dgv2.Rows.Cast<DataGridViewRow>().Where(row => row == dgv.Rows[i]).Count(); 
    // If no row is equal 
    if (occurs <= 0) 
     // Delete it. 
     dgv.Rows.RemoveAt(i); 
} 
+0

Es tut mir sehr leid, dass ich das nicht gesagt habe die gridviews sind nicht auf der gleichen Seite daher muss ich direkt aus der Datenbank abrufen –

+0

Aber es ist nicht etwas ändern, nicht wahr? Nachdem Sie aus der Datenbank ausgewählt haben, füllen Sie ein 'DataGridView', damit Sie meine Methode verwenden können oder fehlt mir etwas? – C4u

+0

Ich könnte falsch interpretiert werden. was ich meine ist, dass es nur eine Gridview in der Seite gibt, daher muss ich es mit einer Tabelle vergleichen, die in der Datenbank ist –

Verwandte Themen