我如何在datagridview列中显示总和?

时间:2010-09-23 15:03:31

标签: c# winforms datagridview

我需要显示此countdatagridview列的总和,但我不知道如何获取datagridview中的数据。

当我点击该按钮时,我想在94中显示label1

如何做到这一点?

alt text

9 个答案:

答案 0 :(得分:34)

int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{
    sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value);
}
label1.Text = sum.ToString();

答案 1 :(得分:15)

使用LINQ快速而干净的方式

int total = dataGridView1.Rows.Cast<DataGridViewRow>()
                .Sum(t => Convert.ToInt32(t.Cells[1].Value));

在VS2013上验证

答案 2 :(得分:14)

如果您的网格绑定到DataTable,我相信您可以这样做:

// Should probably add a DBNull check for safety; but you get the idea.
long sum = (long)table.Compute("Sum(count)", "True");

如果绑定到表格,您可以轻松地将其设为:

var table = new DataTable();
table.Columns.Add("type", typeof(string));
table.Columns.Add("count", typeof(int));

// This will automatically create the DataGridView's columns.
dataGridView.DataSource = table;

答案 3 :(得分:7)

如果可以,请使用LINQ。

  label1.Text =  dataGridView1.Rows.Cast<DataGridViewRow>()
                                   .AsEnumerable()
                                   .Sum(x => int.Parse(x.Cells[1].Value.ToString()))
                                   .ToString();

答案 4 :(得分:3)

 decimal Total = 0;

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    Total+= Convert.ToDecimal(dataGridView1.Rows[i].Cells["ColumnName"].Value);
  }

labelName.Text = Total.ToString();

答案 5 :(得分:2)

将总行添加到将绑定到网格的数据集合中。

答案 6 :(得分:1)

你可以用两个datagridview做得更好,你添加相同的数据源,隐藏第二个的标题,设置第二个的高度=第一个行的高度,关闭第二个的所有可调整大小的属性,同步两个滚动条,只有水平,把第二个滚动到第一个等的底部。

看看:

   dgv3.ColumnHeadersVisible = false;
   dgv3.Height = dgv1.Rows[0].Height;
   dgv3.Location = new Point(Xdgvx, this.dgv1.Height - dgv3.Height - SystemInformation.HorizontalScrollBarHeight);
   dgv3.Width = dgv1.Width;

   private void dgv1_Scroll(object sender, ScrollEventArgs e)
        {
            if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
            {
                dgv3.HorizontalScrollingOffset = e.NewValue;
            }
        }

答案 7 :(得分:1)

//declare the total variable
int total = 0;
//loop through the datagrid and sum the column 
for(int i=0;i<datagridview1.Rows.Count;i++)
{
    total +=int.Parse(datagridview1.Rows[i].Cells["CELL NAME OR INDEX"].Value.ToString());

}
string tota

答案 8 :(得分:0)

使用LINQ很干净

label1.Text = (from DataGridViewRow row in datagridview1.Rows
                                 where !String.IsNullOrEmpty(row.Cells[1].FormattedValue.ToString())
                                 select Convert.ToDouble(row.Cells[1].FormattedValue)).Sum().ToString();