【问题标题】:How to calculate Sum of a part of datagridview如何计算datagridview的一部分的总和
【发布时间】:2019-02-20 01:17:11
【问题描述】:

我有一个 datagridview,其中的列数根据数据库中的数据是动态的。前三列用于显示姓名、姓氏和全名,最后三列用于显示其他人的信息。我想为每一行计算前三列和最后三列之间的总和,并将总和放在Total 列中。我的结果不正确。

下面是我的代码:

private void DgvPV_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    try
    {
        double Sum = 0;
        int countColumn = DgvPV.ColumnCount;
        int countRow = DgvPV.RowCount;
        int column = countColumn - 4;
        for (int i = 0; i < countRow; i++)
        {
            for (int j = 3; j < column; j++)
            {
                Sum += Convert.ToDouble(DgvPV.Rows[i].Cells[j].Value.ToString());
                DgvPV.Rows[i].Cells["Total"].Value = Sum;
            }
        }
        for (int i = 1; i < DgvPV.RowCount; i++)
        {
            DgvPV.Rows[i].Cells["Total"].Value = Convert.ToDouble(DgvPV.Rows[i].Cells["Total"].Value.ToString()) - Convert.ToDouble(DgvPV.Rows[i - 1].Cells["Total"].Value.ToString());
        }              
    }
    catch (Exception ex)
    {
        MessageBox.Show("Erreur de chargement des données... " + ex, "ERREUR DE CONNEXION AU SERVEUR", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
}

【问题讨论】:

  • Paint 事件仅用于绘画,并且永远不会在一个中显示 MessageBox。
  • 好的,我更正它。谢谢。

标签: c#


【解决方案1】:

在外部foreach 中计算后,您忘记重置Sum 变量。这应该工作:

double Sum = 0;
int countColumn = DgvPV.ColumnCount;
int countRow = DgvPV.RowCount;
int column = countColumn - 4;
for (int i = 0; i < countRow; i++)
{
    Sum = 0; // Your bug was right here
    for (int j = 3; j < column; j++)
    {
        Sum += Convert.ToDouble(DgvPV.Rows[i].Cells[j].Value.ToString());
        DgvPV.Rows[i].Cells["Total"].Value = Sum;
    }
}
for (int i = 1; i < DgvPV.RowCount; i++)
{
    DgvPV.Rows[i].Cells["Total"].Value = Convert.ToDouble(DgvPV.Rows[i].Cells["Total"].Value.ToString()) - Convert.ToDouble(DgvPV.Rows[i - 1].Cells["Total"].Value.ToString());
}            

【讨论】:

  • @Ltazmat 然后您可以将其标记为答案。我很高兴它确实对你有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 2017-03-06
相关资源
最近更新 更多