【发布时间】:2020-03-16 13:19:38
【问题描述】:
我有 DataGridView 和 DataGridViewCheckBoxColumn 我想更新数据库如果复选框选中更新 test_status 到 5 ,如果复选框未选中保持 test_status = 4 。列名初始结果。
点击保存按钮时我使用了以下代码:
private void btnSave_Click(object sender, EventArgs e)
{
int test_status = 4;
for (int i = 0; i < dgvResult.Rows.Count; i++)
{
foreach (DataGridViewRow row in dgvResult.Rows)
{
bool status = (bool)row.Cells[8].FormattedValue;
if (status)
{
test_status = 5;
}
else
{
test_status = 4;
}
}
result.UPDATE_LABORDERS_RESULTS(Convert.ToInt32(txtOrder.Text),txtExamUser.Text,
DateTime.Parse(DateTimeExamined.Value.ToString()),
Convert.ToInt32(dgvResult.Rows[i].Cells[2].Value),
dgvResult.Rows[i].Cells[4].Value.ToString(),
dgvResult.Rows[i].Cells[5].Value.ToString(),
Convert.ToInt32(dgvResult.Rows[i].Cells[7].Value.ToString()),
Convert.ToInt32(txtPno.Text),
Convert.ToInt32(txtcustid.Text),
dgvResult.Rows[i].Cells[1].Value.ToString(),
Convert.ToInt32(dgvResult.Rows[i].Cells[6].Value.ToString()),
Convert.ToInt32(txtUpdateCount.Text),test_status);
}
MessageBox.Show("Result Saved Successfully ", "Entering Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
我的代码有什么问题,我需要更新什么?
更新: 我调试代码,它只取最后一行的值而不是每一行,当我选中 datagridview 中最后一行的框时,它更新了数据库中的所有行并保持所有行的测试状态 = 5。
如何将 test_status 从第一个 foreach 循环传递到第二个 update_laborders_results?
【问题讨论】:
-
test_status 只有最后一行的值。您必须在更新循环中为您所在的行获取该值。
-
@LarsTech 我会怎么做你能发布代码吗?
-
摆脱你的for-each。在你的 for 循环中移动该代码。
-
我看到了您更新的代码。我的评论仍然有效:摆脱 for-each。
-
字面上,删除它。看看它做了什么。它遍历行,因此最后一行是确定 test_status 值的行。 test_status 需要根据你所在的行,“i”变量来确定。
标签: c# checkbox datagridview