2016-10-10 4 views
0

Also, ich habe seit ein paar Tagen einige Praxis Code zu tun. Ich arbeite an einem DataGridView, ohne eine Datenbank. Alles scheint zu funktionieren, bis auf ein Problem. Wenn ich auf die Schaltfläche zum Löschen oder Aktualisieren klicke, ohne einen Datensatz auszuwählen, stürzt das Formular ab. Hier ist die Update-Funktion:DataGridView Löschen/Aktualisieren von Problemen

private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     if (dgvProfiles.SelectedCells == null) 
     { 
      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; 
        } 
       } 
      } 
      DataGridViewRow newDataRow = dgvProfiles.Rows[indexRow]; 
      newDataRow.Cells[0].Value = txtFirstName.Text; 
      newDataRow.Cells[1].Value = txtLastName.Text; 
      newDataRow.Cells[2].Value = txtPhone.Text; 
      newDataRow.Cells[3].Value = txtEmail.Text; 
      newDataRow.Cells[4].Value = txtCity.Text; 
      newDataRow.Cells[5].Value = cbxState.Text; 
      newDataRow.Cells[6].Value = txtZip.Text; 
     } 
    } 

Vielen Dank im Voraus!

+0

Und was möchten Sie erreichen? Sie möchten prüfen, ob eine Zeile ausgewählt ist oder was? –

+0

Ich mache so etwas, aber mit ein paar zusätzlichen Funktionen, Textfeldern usw. Wäre es nicht gut, Feedback zu geben, wenn Sie auf eine Schaltfläche klicken, aber nichts passiert? http://4.bp.blogspot.com/-QQdixXA53Ss/UyiZTH_FSqI/AAAAAAAAAho/7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

Antwort

1

SelectedCells ist eine Sammlung, die das System bietet.

Es ist nie null.

Es kann jedoch leer sein, so dass, wenn (aus irgendeinem Grund), die Sie Sie schreiben können überprüfen:

if (dgvProfiles.SelectedCells.Count <= 0).. 

oder

if (dgvProfiles.SelectedRows.Count <= 0).. 

Ich bin nicht sicher, warum Sie eine Reihe fordern oder Zelle an erster Stelle ausgewählt werden, obwohl. Sollte das Speichern nicht immer funktionieren ..?

+0

Vielen Dank! Das hat funktioniert. Ich dachte nur, es wäre gut, wenn Sie nichts auswählen, klicken Sie auf eine Schaltfläche, und nichts passiert. Sollte es keine Rückmeldung geben? Ich mache eine Form wie diese. http://4.bp.blogspot.com/-QQdixXA53Ss/UyiZTH_FSqI/AAAAAAAAAho/7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

+0

Ja, nachdem ich das Bild gesehen habe, kann ich es ein wenig verstehen besser. Normalerweise wird an Ort und Stelle gearbeitet, aber in einigen Fällen ist auch der "Formular" -Ansatz nützlich. Aber dann brauchen Sie eine enge Verbindung zwischen der Auswahl und den Feldinhalten. Verwenden Sie SelectionChanged, um die aktuelle Auswahl zu laden oder die Felder zu löschen, wenn nichts ausgewählt ist. Sie können auch einige Tasten deaktivieren. Dies verhindert die ganze Situation. Setzen Sie auch multiselect auf false. – TaW

+0

Danke für die Tipps. Ich werde versuchen, all das Zeug, das du erwähnt hast, umzusetzen. –

Verwandte Themen