Datagridview列SUM到文本框&每个添加行更新文本框

时间:2015-03-15 03:52:27

标签: c# datagridview sum multiple-columns

我是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);
}

请帮忙。

1 个答案:

答案 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();
        }
    }