在按钮内单击,我得到了这段代码,它将来自组合框的文本插入到C列:
private void updateExcel_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
for (int ii = 0; ii < dataGridView1.RowCount - 1; ii++)
{
dataGridView1[2, ii].Value = ConsigneeCombo.Text;
}
break;
}
}
}
}
其运行时,应仅将值放在行中,且该行的A列中有值,但它会重复在所有行上插入的值。
答案 0 :(得分:1)
关于您要做什么……,张贴的循环和逻辑看起来不正确。
…”,它只能将值放在A列为 该行” …。
当前代码使用一个for
循环遍历网格中的所有“行” ...
for (int i = 0; i < dataGridView1.Rows.Count; i++)
然后另一个for
循环遍历网格中的所有“列”……
for (int j = 0; j < dataGridView1.Columns.Count; j++)
这将遍历网格中的所有单元格… 如果网格中的单元格之一不为空……
if (dataGridView1.Rows[i].Cells[j].Value != null)
然后(AGAIN?)循环遍历所有“行”,并将该行中的第三列值设置为组合框中包含的值…。 ?
这听起来不像您想要的。 “ break”语句只是在找到“ first”值之后“跳过”列。这种逻辑无法实现您的要求。
因此,为了简化
“它应该只将值放在行的A列中的值上”
这意味着我们只需要遍历所有行。不必遍历各列,我们只需要执行一次此循环。逻辑存在……
遍历每行中的所有行,如果A列(0)中有“值”,则将组合框文本添加到C列(2)。这种逻辑可能类似于以下内容。
private void updateExcel_Click(object sender, EventArgs e) {
for (int i = 0; i < dataGridView1.RowCount; i++) {
if (!dataGridView1.Rows[i].IsNewRow &&
dataGridView1.Rows[i].Cells[0].Value != null &&
dataGridView1.Rows[i].Cells[0].Value.ToString() != "") {
dataGridView1[2, i].Value = ConsigneeCombo.Text;
}
}
}
仅当第一列中的值不为空时,才将组合框文本添加到第三列中。