c# で Windows アプリケーションを開発しています。
約40kのレコードを含むグリッドビューがあります。
そのグリッドビューにはチェックボックスがあります。
チェックされたレコードのみを更新したかったのです。
私はそれのために次のコードを書きました>>
for (int i = 0; i < gvTradeFile.Rows.Count; i++)
{
try
{
DataGridViewCell cell = gvTradeFile.Rows[i].Cells[0];
bool check = (bool)cell.Value;
if (check)
{
try
{
con.Open();
cmd = new SqlCommand("update tradeFile set Party_Code='" + txtTransferPartyCode.Text + "' where Party_Code='" + gvTradeFile.Rows[i].Cells[1].Value.ToString() + "' and TradeNo='" + gvTradeFile.Rows[i].Cells[6].Value.ToString() + "' and Sauda_Date='" + gvTradeFile.Rows[i].Cells[13].Value.ToString() + "' and OrderNo='" + gvTradeFile.Rows[i].Cells[14].Value.ToString() + "'", con);
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
}
catch (Exception ex)
{
}
}
これを見るとfor loop
、グリッド内の各行を扱っています。
forループで[グリッドのチェックボックスを介して]チェックされた行のみを直接取得できる特定の手法はありますか?
上記のコードは正常に動作しますが、すべての行がチェックされるため、exe がハングします。
私を助けてください。