C# 数据网格视图复选框中的多个更新

C# 数据网格视图复选框中的多个更新,c#,.net,C#,.net,我正在尝试根据复选框列“状态”更新列的状态。 我是对的,一次只能更新一行。我需要同时进行多个更新 下面是我的一段代码: private void button1_Click(object sender, EventArgs e) { foreach (DataGridViewRow row in dataGridView2.Rows) { if (con.State == ConnectionState.Open) { c

我正在尝试根据复选框列“状态”更新列的状态。 我是对的,一次只能更新一行。我需要同时进行多个更新

下面是我的一段代码:

private void button1_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView2.Rows)
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }
        if (row.Cells["txtStatus"].Value != null)
        {
            if (Convert.ToBoolean(row.Cells["txtStatus"].Value) == true)
            {
                con.Open();
                string query = @"update tbl_Training_Records_CIP_dotnet set Attendance_Status = 'Attended' where RequestId=@RequestId";
                SqlCommand cmd = new SqlCommand(query, con);
               // cmd.Parameters.AddWithValue("@training_id", row.Cells["txt_Training_ID"].Value.ToString());
                cmd.Parameters.AddWithValue("@RequestId", row.Cells["txtRequestId"].Value.ToString());
                cmd.ExecuteNonQuery();
                MessageBox.Show("Records have been updated");
                con.Close();
                loaddatatable2();
            }
        }

为什么调用loaddatatable2()函数?它应该在foreach循环之外(也是消息框)。我认为这个函数会加载数据网格视图中的值,所以当第一次更新查询发生时,它会加载数据,并消失所有剩余的值。可怕的异常处理。不起作用
foreach (DataGridViewRow dr in dgvPendingApprovals.Rows)
{

    int rid = int.Parse(dgvPendingApprovals[1, dr.Index].Value.ToString());
    DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
    ch1 = (DataGridViewCheckBoxCell)dr.Cells[0];
    try
    {
        switch (ch1.Value.ToString())
        {
            case "False":
                ch1.Value = false;
                break;
            case "True":
                cmd.CommandText = "Update ApplicantDetails set Status2 = 'Yes', ApprovedDate2 =  getdate() where Id = '" + rid + "'";
                cmd.Connection = conobj.getConn();
                conobj.openCon();
                cmd.ExecuteNonQuery();
                conobj.closeCon();
                rid = 0;
                break;
        }
    }
    catch { }
}