【发布时间】:2017-01-19 05:42:30
【问题描述】:
我正在尝试获取每个 ID 在每个日期的总金额。
示例数据:
ID Date Amount
619|RENE ABERIA 2017-01-03 418.80
619|RENE ABERIA 2017-01-03 497.48
619|RENE ABERIA 2017-01-03 29.13
620|JAMES APRECIO 2017-01-03 460.70
620|JAMES APRECIO 2017-01-03 76.33
620|JAMES APRECIO 2017-01-04 460.70
620|JAMES APRECIO 2017-01-04 59.32
620|JAMES APRECIO 2017-01-06 460.70
这一切都在一个数据网格视图中,并且有很多行。对于“2017-01-03”上的“619”,我有 3 个不同的金额,例如418.80、497.48 和 29.13。我想合计这个金额并将其放在最后一个条目的下方,如下所示。
ID Date Amount
619|RENE ABERIA 2017-01-03 418.80
619|RENE ABERIA 2017-01-03 497.48
619|RENE ABERIA 2017-01-03 29.13
Total: 945.41
620|JAMES APRECIO 2017-01-03 460.70
620|JAMES APRECIO 2017-01-03 76.33
Total: 537.03
620|JAMES APRECIO 2017-01-04 460.70
620|JAMES APRECIO 2017-01-04 59.32
Total: 520.02
620|JAMES APRECIO 2017-01-06 460.70
Total: 460.70
我想我必须使用 FOR LOOP 才能转到每一行,但我不知道如何去做或继续。以下是我目前所拥有的,显然,要完成它还有很长的路要走。
private void GetTotalShareForDay()
{
string laborerOrig = null;
string laborerCopy = null;
string dateOrig = null;
string dateCopy = null;
var share = 0.0;
for (var i = 0; i < dgvSummary.Rows.Count; i++)
{
if (i == 0)
{
laborerOrig = dgvSummary.Rows[i].Cells[0].Value.ToString();
dateOrig = dgvSummary.Rows[i].Cells[1].Value.ToString();
laborerCopy = laborerOrig;
dateCopy = dateOrig;
share += Convert.ToDouble(dgvSummary.Rows[i].Cells[5].Value);
Console.WriteLine(dateOrig + @" - " +dgvSummary.Rows[i].Cells[0].Value + @" - " + share);
continue;
}
else
{
laborerOrig = dgvSummary.Rows[i].Cells[0].Value.ToString();
dateOrig = dgvSummary.Rows[i].Cells[1].Value.ToString();
if (laborerCopy == laborerOrig && dateCopy == dateOrig)
{
share += Convert.ToDouble(dgvSummary.Rows[i].Cells[5].Value);
Console.WriteLine(dateOrig + @" - " + dgvSummary.Rows[i].Cells[0].Value + @" - " + share);
}
else if (laborerCopy == laborerOrig && dateCopy != dateOrig)
{
dateCopy = dateOrig;
share = Convert.ToDouble(dgvSummary.Rows[i].Cells[5].Value);
Console.WriteLine(dateOrig + @" - " + dgvSummary.Rows[i].Cells[0].Value + @" - " + share);
}
else
{
laborerCopy = laborerOrig;
dateCopy = dateOrig;
share = Convert.ToDouble(dgvSummary.Rows[i].Cells[5].Value);
Console.WriteLine(dateOrig + @" - " + dgvSummary.Rows[i].Cells[0].Value + @" - " + share);
}
}
}
}
这与“how I can show the sum of in a datagridview column?”中的问题不同,因为该示例仅汇总该列中的所有内容。我需要的是对具有相同 ID 和相同日期的列的值求和。
非常感谢您的帮助。
【问题讨论】:
-
你当前的代码有什么问题?
-
该代码只是一个尝试。我不知道如何去创建 for 循环来完成我所需要的。
-
这与“如何在 datagridview 列中显示总和?”中的问题不同。因为该示例仅汇总了该列中的所有内容。我需要的是对具有相同 ID 和相同日期的列的值求和。
-
我之前也遇到过这种问题。虽然有可能,但我建议创建多个网格视图,每个组一个(在您的情况下为 id)。通过这种方式,您可以轻松添加包含对象总和的行,我认为如果操作正确,它有可能对用户更加友好
-
如果我为每个ID和Date创建一个gridview,那么它将是数千个datagridview。
标签: c# datagridview