2017-07-04 28 views
0

タイトルとして、私はdatagridviewからすべての行を削除し、データベースからそれらを削除する処理をしたいと言っています。 Heres私のコードが、1つだけの行を削除し、すべてではありません。あなたのコードでは、あなたにDataGridviewとデータベースからすべての行を削除します

 private void clear_Click(object sender, EventArgs e) 
    { 

     if (this.dgvProducts.SelectedRows.Count > 0) 
     { 
      foreach (DataGridViewRow row in dgvProducts.SelectedRows) 
      { 
       int selectedIndex = dgvProducts.SelectedRows[0].Index; 
       int rowID = int.Parse(dgvProducts[0, selectedIndex].Value.ToString()); 
       crud.AddRecord("Delete from Supplier_productlist where ProductID = '" + rowID + "' and SupplierID = '"+supplierid.Text+"' "); 

      } 
     } 

     //dgvProducts.Refresh(); 

    } 

答えて

0

ありがとう、あなただけのSelectedRows、すべてではないをループしています。

foreach (DataGridViewRow row in dgvProducts.SelectedRows) 

全体DataGridの行をループするには

foreach (DataGridViewRow row in dgvProducts.**Rows**) 

希望を使用する必要があり、このリンクが役立ちます: https://msdn.microsoft.com/ru-ru/library/system.windows.forms.datagridview.rows(v=vs.110).aspx

+1

はまだ一つだけの行を削除します。リンクサーのおかげで、ロシアの笑い – FutureDev

+0

よろしくお願いします。ループして 'row'変数で行を取得できるので、' selectedIndex = dgvProducts.SelectedRows [0] .Index; 'は必要ありません。 Btw、あなたの 'supplierid.Text'がテキストを修正して、' SupplierID = '"+ supplierid.Text +"' "'のデータベースからの1つのレコードだけが影響を受けるかどうか、それをまったく削除する必要がありますか? – KamikyIT

+0

ここに英語のリンクがあります:https://msdn.microsoft.com/en-gb/library/system.windows.forms.datagridview.rows(v=vs.110).aspx – KamikyIT

1

foreachループでは、唯一の0番目の項目が処理されたようです。

インデックスを指定する場合は、foreachの代わりにloopを使用することをお勧めします。

あなたはforeachのを使用したい場合、あなたはおそらく、「行」に自分自身の仕事の代わりに、0番目の項目に取り組んでおく必要があります:私はそれを変更した後

dgvProducts.SelectedRows[0] 
dgvProducts[0, selectedIndex] 
+0

私はそれを使って製品を指定しました。?データベースに削除するためのIDどのように私はそれをテストしなければ代わりに0番目の項目先生の – FutureDev

+0

行で作業することができ、私はこの最初に試すことをお勧めします: 置き換える int型のselectedIndex = dgvProducts.SelectedRows [0] .INDEXを、 をby int selectedIndex = row.Index; 私はここで何が起こるかは、foreachループに関係なく、すべての繰り返しでc odeは常に0番目の項目から索引を抽出します。 –

+0

intのselectedIndexが開始された行でブレークポイントでデバッガを実行すると、各繰り返しで異なるインデックスが割り当てられていることがわかります。そうであれば、正しい方向に進んでいますが、さらにコードを変更する必要はないかもしれません。 –

関連する問題