Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算datagridview一部分的总和_C# - Fatal编程技术网

C# 如何计算datagridview一部分的总和

C# 如何计算datagridview一部分的总和,c#,C#,我有一个datagridview,其中的列数根据数据库中的数据是动态的。前三列用于显示姓名、姓氏和全名,后三列用于显示其他人员信息。我想为每一行计算前三列和后三列之间的总和,并将总和放入Total列。我的结果不正确 下面是我的代码: private void DgvPV_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { try { double Sum = 0; i

我有一个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;
    }
}
private void DgvPV_RowPostPaint(对象发送方,DataGridViewRowPostPaintEventArgs e)
{
尝试
{
双和=0;
int countColumn=DgvPV.ColumnCount;
int countRow=DgvPV.RowCount;
int column=countColumn-4;
对于(int i=0;i
在外部
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());
}            
double Sum=0;
int countColumn=DgvPV.ColumnCount;
int countRow=DgvPV.RowCount;
int column=countColumn-4;
对于(int i=0;i
在外部
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());
}            
double Sum=0;
int countColumn=DgvPV.ColumnCount;
int countRow=DgvPV.RowCount;
int column=countColumn-4;
对于(int i=0;i
Paint事件仅用于绘制,并且从不在其中显示MessageBox。好的,我更正它。谢谢。绘画活动仅用于绘画,并且从不在其中显示MessageBox。好的,我更正它。谢谢。@Ltazmat那么你可以把它标记为答案。我很高兴它确实有用you@Ltazmat然后你可以把它标记为答案。我很高兴它确实帮助了你