別の 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