2016-10-10 16 views
0

私は数日間、いくつかの練習問題を行ってきました。私はデータベースなしでDataGridViewを使用して作業しています。 1つの問題を除けば、すべてがうまくいくようです。レコードを選択せず​​に削除ボタンまたは更新ボタンをクリックすると、フォームがクラッシュします。更新機能は次のとおりです。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/AAAAAAAAA//7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

答えて

1

SelectedCellsは、システムが提供するコレクションです。

これは決してnullです。

(何らかの理由で)あなたが書くことができます確認したいので、もしそれが、しかしemtpyことができます。

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

または

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

あなたが行を要求する理由は、私はわからないんだけどまたは、最初に選択されるべきセルである。いつも仕事を保存してはいけないのですか?

+0

ありがとうございました!それはうまくいった。私はちょうどあなたが何も選択せず、ボタンをクリックしても何も起こらないと良いと思った。フィードバックはありませんか?私はこのような形を作っています。 http://4.bp.blogspot.com/-QQdixXA53Ss/UyiZTH_FSqI/AAAAAAAAA//7y8kxTeDwDg/s1600/DataGridView+in+c%23+form+2.PNG –

+0

ええ、よく画像を見た後、私は少しそれを理解することができますより良い。通常、場所の編集が使用されますが、場合によっては 'フォーム'アプローチも便利です。しかし、選択とフィールド内容の間に緊密な接続が必要です。 SelectionChangedを使用して現在の選択範囲をロードするか、何も選択されていないときにフィールドをクリアします。いくつかのボタンを無効にすることもできます。これにより、状況全体を防ぐことができます。また、multiselectをfalseに設定します。 – TaW

+0

ヒントをありがとう。私はあなたが言及したすべてのものを実装しようとします。 –

関連する問題