0

別の DataGrid が更新されるたびに更新される DataGrid の列の値を合計しています。たとえば、ユーザーが DataGrid1 で値を選択すると、そのデータが DataGrid に追加されます。その部分は素晴らしく機能しています。合計が得られるように、列の 1 つを合計する必要があります。これは私が思いついたコードで、GridView1.SelectedIndexChanged イベントの下で発生します。

        For Each GridViewRow In GridView2.Rows


            Sum = Convert.ToDouble(row.Cells(3).Text)
            Total = Sum + Total
            lblTotal.Text = Total.ToString

        Next

今、問題はこれからです。たとえば... 2.00の2つの値がある場合、合計は問題ありません。4 になります。しかし、値が 2.30 の Item2 などの別の項目を追加すると、合計は 4.60 になります。最初に 2.30 アイテムを追加してから 2 アイテムを追加すると、4 という値が得られます。何か不足していますか?丸め?何かを解析する必要がありますか?

完全なコードを先に

 Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged


    Dim row = GridView1.SelectedRow
    If Not row Is Nothing AndAlso IsNumeric(row.Cells(3).Text) Then
        Dim Price As Double = CDbl(row.Cells(3).Text)
        Dim Name As String = CStr(row.Cells(2).Text)
        lblCart.Visible = True
        Dim InfoTotal As String = "$" & "    " & Precio & "      " & Nombre


        Dim Total As Double

        If GridView2.Rows.Count = 0 Then
            '  dt = New DataTable()
            dt.Columns.Add(New DataColumn("Name", GetType(System.String)))
            dt.Columns.Add(New DataColumn("Price", GetType(System.String)))
        Else
            dt = DirectCast(Session("DataTable"), DataTable)
        End If

        Dim Sum As Double
        Dim dr1 As DataRow = dt.NewRow()
        dr1(0) = Name.ToString
        dr1(1) = CDbl(Price.ToString)
        dt.Rows.Add(dr1)
        GridView2.DataSource = dt
        GridView2.DataBind()
        Session("DataTable") = dt

        For Each GridViewRow In GridView2.Rows
            Sum = CDbl(row.Cells(3).Text)
            Total += Sum
        Next

        lblTotal.Text = Total.ToString
        ListBox1.Items.Add(CStr(InfoTotal))

    End If


End Sub
4

2 に答える 2

1

値を 2 回追加している追加のコードが欠落しているようです。完全なコードを投稿してください。for以下は、(ほんの少し)少ないコードであなたがしていることを達成します-また、ラベルが完了するまで更新する意味はありません。

For Each GridViewRow In GridView2.Rows
                Sum = CDbl(row.Cells(3).Text)
                Total += Sum
            Next

lblTotal.Text = Total.ToString
于 2013-05-15T16:55:52.943 に答える