我是C#&我需要你的帮助以解决我的问题。 我是DGV&它不受任何数据源的约束。我的文本框很少datetimepicker将数据添加到DGV。一旦用户按下我的表单中的“添加”按钮,它将向DGV添加新行。我的问题是我需要将我的DGV中的第4列的SUM添加到我的表单中的文本框中,这是总帐单值。并且应该使用每个添加行列第5个值
进行更新希望你们明白我的问题。对不起,我的英语不好。欢迎任何代码。
textBox10.Text = "0";
foreach (DataGridViewRow row in dgvFE.Rows)
{
int n1 = row.Index;
textBox10.Text = (Double.Parse(textBox10.Text.ToString()) + Double.Parse(dgvFE.Rows[n].Cells[4].Value.ToString())).ToString();
}
我在“ADD”按钮点击事件下输入了上面的代码。但是我的textbox10只显示了账单价值的第一行。不是第5列中所有行的SUM。 (如前所述,用户可以添加更多列。)
我在相同的按钮点击事件下尝试了以下代码,但textbox10中的结果与上面的代码相同。
int sum = 0;
for (int x = 0; x < dgvFE.Rows.Count; x++ )
{
sum += Convert.ToInt32(dgvFE.Rows[x].Cells[4].Value);
}
请帮忙。
答案 0 :(得分:1)
从您的帖子中可以看出,应用程序用户将手动将数据输入网格。如果是这样,使用添加按钮单击事件不是更新总计的正确位置。
我假设您在添加&#34;添加&#34;单击按钮。它只是一个新行,它不会有任何数据。当用户输入数据时,事件已经处理,textbox10
将不会更新。
您应该使用DataGridView.CellValueChanged
事件来更新列总数。
代码示例:
void dgvFE_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 4)
{
textBox10.Text = (from DataGridViewRow r in dgvFE.Rows
select Convert.ToDouble(r.Cells[e.ColumnIndex].Value))
.Sum().ToString();
}
}