2016-10-10 6 views
3

Ist es möglich, doppelte Datensätze zu blockieren, aber auch einen ausgewählten Datensatz bearbeiten? Ich arbeite an etwas ähnlichem. Blockiert von der Bearbeitung von DataGridView-Datensatz

Wenn ich zahlreiche Datensätze habe und ich die zweite oder dritte aktualisiere, erwarte ich eine Warnung, wenn ich versuche, die ID des ersten Datensatzes zu verwenden; das funktioniert gut. Wenn ich jedoch versuche, den Namen, die Stadt usw. des ersten Datensatzes zu bearbeiten, wird der doppelte ID-Fehler angezeigt, da ich die ID nicht geändert habe. es zählt sich selbst als ein Duplikat. Keine Ahnung, was zu tun ist. Ich habe versucht, Haltepunkte zu verwenden, aber ich sehe nichts Interessantes. Vielen Dank.

private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     if (dgvProfiles.SelectedCells.Count <= 0) 
     { 
      MessageBox.Show("No record was selected to update."); 
     } 

     else { 
      for (int row = 0; row < dgvProfiles.Rows.Count; row++) 
      { 
       for (int col = 0; col < dgvProfiles.Columns.Count; col++) 
       { 
        if (dgvProfiles.Rows[row].Cells[col].Value != null && 
         dgvProfiles.Rows[row].Cells[col].Value.Equals(txtEmail.Text.Trim())) 
        { 
         MessageBox.Show("Duplicate email was entered."); 
         return; 
        } 

        else if (dgvProfiles.Rows[row].Cells[col].Value != null && 
         dgvProfiles.Rows[row].Cells[col].Value.Equals(txtID.Text.Trim())) 
        { 
         MessageBox.Show("Duplicate ID was entered."); 
         return; 

        } 
       } 
      } 
      DataGridViewRow newDataRow = dgvProfiles.Rows[indexRow]; 
      newDataRow.Cells[0].Value = txtID.Text; 
      newDataRow.Cells[1].Value = txtName.Text; 
      newDataRow.Cells[4].Value = txtEmail.Text; 
      newDataRow.Cells[5].Value = txtCity.Text; 
      newDataRow.Cells[6].Value = cbxState.Text; 

     } 
    } 
+1

Keine Antwort auf Ihre eigentliche Frage, aber Sie müssen nicht jede Spalte jeder Zeile suchen - Sie wissen, dass die ID in Spalte Null ist, so überprüfen Sie einfach die Zellen in dieser Spalte und das gleiche für E-Mails. Wie es derzeit ist, wenn _any cell_ mit dem ID-Wert übereinstimmt, zählt es als ein Duplikat. – stuartd

+1

Scheint, dass Sie nur nach ID-Duplikaten suchen sollten (und es ist nicht klar, woher diese stammen), wenn Sie hinzufügen. – Plutonix

Antwort

1

Mit der Validation events versuchen.

Und wenn Sie Ihre DataGridView an ein DataSet binden, wird es einfacher, die Werte im DataSet zu gehen, um Duplikate zu finden. Siehe DataSource property.

+0

Vielen Dank! –

Verwandte Themen