【发布时间】:2020-09-17 03:21:43
【问题描述】:
我有一个 DataGridView 来显示来自 DataTable“dtGrid”的数据。 dtGrid 有“MyDate”和“Amount”两列,行是这样的,
dtGrid.Rows.Add(new object[] { "2020-09-14", 100 });
dtGrid.Rows.Add(new object[] { "2020-09-14", 150 });
dtGrid.Rows.Add(new object[] { "2020-09-14", 110 });
dtGrid.Rows.Add(new object[] { "2020-09-16", 200 });
dtGrid.Rows.Add(new object[] { "2020-09-16", 170 });
现在,我需要将 DataGridView 填充为
2020-09-14 |100
2020-09-14 |150
2020-09-14 |110
Total|360
2020-09-16 |200
2020-09-16 |170
Total|370
我试图在循环中检查 dtGrid 的下一行日期,例如,
for (int i = 0; i < dtGrid.Rows.Count; i++)
{
if (i + 1 < dtGrid.Rows.Count && dtGrid.Rows[i][0] != dtGrid.Rows[i + 1][0])
{
GridReport.Rows.Add(dtGrid.Rows[i][0], dtGrid.Rows[i][1]);
var dtFiltered = dtGrid.AsEnumerable()
.Where(x => x.Field<DateTime>("MyDate").ToString().Equals(dtGrid.Rows[i][0].ToString()))
.CopyToDataTable();
var Total = dtFiltered.AsEnumerable()
.Sum(x => x.Field<double>("Amount"));
GridReport.Rows.Add("Total:", Total);
}
else if(i + 1 < dtGrid.Rows.Count && dtGrid.Rows[i][0] == dtGrid.Rows[i + 1][0])
{
GridReport.Rows.Add(dtGrid.Rows[i][0], dtGrid.Rows[i][1]);
}
else if (i + 1 == dtGrid.Rows.Count)
{
GridReport.Rows.Add(dtGrid.Rows[i][0], dtGrid.Rows[i][1]);
var dtFiltered = dtGrid.AsEnumerable()
.Where(x => x.Field<DateTime>("MyDate").ToString().Equals(dtGrid.Rows[i][0].ToString()))
.CopyToDataTable();
var Total = dtFiltered.AsEnumerable()
.Sum(x => x.Field<double>("Amount"));
GridReport.Rows.Add("Total:", Total);
}
}
它只是不起作用。任何建议将不胜感激。
【问题讨论】:
标签: c# winforms datagridview