datagrid上的计算行返回错误的值

时间:2014-04-14 15:40:10

标签: vb.net datagrid

我正在尝试计算数据网格中一行的总数,并提出以下代码。

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim dblQty As Double
    Dim dblPrice As Double

    For index As Integer = 0 To grdNewInvoice.RowCount - 1

        dblQty += Convert.ToDouble(grdNewInvoice.Rows(index).Cells(1).Value)
        dblPrice += Convert.ToDouble(grdNewInvoice.Rows(index).Cells(2).Value)

        grdNewInvoice.Rows(index).Cells(3).Value = dblPrice * dblQty


    Next


End Sub

如果我只有一行,那么效果很好。如果我有第二行,它会添加所有列的值,如下所示。第1列有一个组合框,用户可以更改数量的值,我希望每次用户更改值时重新计算总行数。但是,它没有正确计算,如果我更改任何行上的值,它会将所有行添加到一起,如下所示:

enter image description here

我将葡萄酒的价值改为4,产生错误的总数

1 个答案:

答案 0 :(得分:1)

删除+=,否则您会聚合qty和每price

9 * $17 = $153

9 = 5 + 4, $17 = $7.00 + $10.00

代码应该是:

For index As Integer = 0 To grdNewInvoice.RowCount - 1

    dblQty = Convert.ToDouble(grdNewInvoice.Rows(index).Cells(1).Value)
    dblPrice = Convert.ToDouble(grdNewInvoice.Rows(index).Cells(2).Value)

    grdNewInvoice.Rows(index).Cells(3).Value = dblPrice * dblQty


Next