2016-10-10 95 views
0

所以,我一直在做一些练习代码几天。我正在使用DataGridView,没有数据库。一切似乎都有效,除了一个问题。每当我点击删除或更新按钮而没有选择一条记录时,表单就会崩溃。这里的更新功能:DataGridView删除/更新问题

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; 
     } 
    } 

在此先感谢!

+0

你想达到什么目的?你想检查是否有任何行选择或什么? –

+0

我正在做这样的事情,但有一些额外的功能,文本框等。单击按钮时提供反馈不是很好,但没有任何反应? http://4.bp.blogspot.com/-QQdixXA53Ss/UyiZTH_FSqI/AAAAAAAAAho/7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

回答

1

SelectedCells是系统提供的一个集合。

它从不为空。

它可以是emtpy虽然,所以如果(出于某种原因)要检查你可以这样写:

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

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

我不知道为什么你需要一个排或细胞首先被选中,但是。不应该保存总是工作..?

+0

谢谢!这工作。我只是觉得如果你不选择任何东西,点击一个按钮就没有任何反应。不应该有反馈吗?我正在制作这样的表格。 http://4.bp.blogspot.com/-QQdixXA53Ss/UyiZTH_FSqI/AAAAAAAAAho/7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

+0

是的,看到图像后,我可以理解一点更好。通常使用编辑,但在某些情况下,“表单”方法也很有用。但是,您需要在选择内容和字段内容之间建立紧密联系。使用SelectionChanged加载当前选择或在没有选择任何内容时清除字段。您也可以禁用某些按钮。这可以防止整个情况..也设置multiselect为false。 – TaW

+0

感谢您的提示。我将尝试实现你提到的所有内容。 –