Datagridview行乘法和求和

时间:2014-10-21 06:59:19

标签: c# winforms

我将代码用于datagridview1的sum单元格,如下所示

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    int sum = 0;
    for (i = 0; i < dataGridView1.Rows.Count - 1; i++)
    {
        if (dataGridView1.Rows[i].Cells[0].Value != null)
        {
            sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());
            label1.Text = Convert.ToString(sum);
        }
    }
}

但是我希望我的cell[0].value总和显示在label1中,如下所示,但是如果我可以使用乘以其他单元格中的任何数字,如下图所示答案应为= {{1} } 见下面详细介绍了它的来历

  

5 + 4 = 9 * 2 = 18

     

(18 + 2)* 3 = 60

enter image description here

2 个答案:

答案 0 :(得分:1)

试试这个解决方案:

int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
    //for 1st column
    if (dataGridView1.Rows[i].Cells[0].Value != null && !String.IsNullOrEmpty(dataGridView1.Rows[i].Cells[0].Value.ToString()))
        sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value.ToString());

    //for 2nd column
    if (dataGridView1.Rows[i].Cells[1].Value != null && !String.IsNullOrEmpty(dataGridView1.Rows[i].Cells[1].Value.ToString()))
        sum *= Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value.ToString());

    //for 3rd column
    if (dataGridView1.Rows[i].Cells[2].Value != null && !String.IsNullOrEmpty(dataGridView1.Rows[i].Cells[2].Value.ToString()))
        sum *= Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value.ToString());
}

label1.Text = Convert.ToString(sum);

在所有计算后将sum分配给label1。在每次迭代中都没用它。

答案 1 :(得分:0)

我想我有一个解决方案,但它需要一个Gridview,而不是一个datagridview所以如果你要使用它就留下评论,否则就会删除它。

foreach(GridViewRow row in gridCriteria.Rows)
    {
      foreach(TableCell cell in row.Cells)
      {
          if(cell.Text != "")
          {
                int indexOf = row.Cells.GetCellIndex(cell);

              if(indexOf == 0)
              {
                  Sum += Convert.ToInt32(cell.Text);
              }
              else
              {
                  Sum *= Convert.ToInt32(cell.Text);
              }
         }
      }

    }