【问题标题】:Calculate total from datagridview into textbox从datagridview计算总数到文本框
【发布时间】:2013-10-10 17:03:26
【问题描述】:
我有一个用于显示交易记录的数据网格视图。
datagridview 中的一列是“Total”,即“SubTotal”乘以“Quantity”。
我的问题是,我如何通过将 datagridview 中的所有“Total”计算到文本框中来制作“GrandTotal”?
截图如下:
如果您在上面的 datagridview 中看到,有一个名为“Total”的列,这个“Total”是从“Quantity”乘以“SubTotal”得到的,我想要计算“Total”(总和列中的“总计”)到文本框中。
我该怎么做?
我已经考虑过了,但我不知道如何将 datagridview 中的“总计”列计算(总和)到文本框中。
感谢您的回答。
非常感谢!
【问题讨论】:
标签:
c#
winforms
ms-access
datagridview
【解决方案1】:
遍历每一行并找到包含总值的单元格。将此总值转换为双精度(任何数字数据结构)并通过将每个值与之前的总计相加来计算总计。
没有 Linq
double result = 0;
foreach (DataGridViewRow row in DataGridView.Rows)
{
result += Convert.ToDouble(row.Cells["Total"].Value);
}
使用 Linq
double result = DataGridView.Rows.Cast<DataGridViewRow>().Sum(row => Convert.ToDouble(row.Cells["Total"].Value));
【解决方案2】:
如果您要绑定 List 或 DataTable,那么只需使用 LINQ 的 SUM 方法
【解决方案3】:
//可以在按钮的点击事件中使用
str = "YOUR SQL QUERY";
objCom = new SqlCommand(str, objCon);
objDataAdapter = new SqlDataAdapter(objCom);
objDataSet = new DataSet();
objDataAdapter.Fill(objDataSet, "TABLE NAME");
dataGridView2.DataMember = "TABLE NAME";
dataGridView2.DataSource = objDataSet;
dataGridView2[3, dataGridView2.Rows.Count - 1].Value = "Total";
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Cells[3].Style.ForeColor = Color.White;
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Cells[3].Style.BackColor = Color.Green;
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Cells[4].Style.ForeColor = Color.White;
double sum = 0;
for (int row = 0; row < dataGridView2.Rows.Count; row++)
{
sum = sum + Convert.ToDouble(dataGridView2.Rows[row].Cells[4].Value);
}
dataGridView2.Rows[dataGridView2.Rows.Count - 1].Cells[4].Value = sum.ToString();