Я суммирую значение столбца в DataGrid, которое обновляется каждый раз, когда обновляется другой DataGrid. Скажем, пользователь выбирает значение в DataGrid1, он добавляет эти данные в DataGrid. Эта часть работает чудесно. Мне нужно суммировать один из столбцов, чтобы он дал мне общее количество. Это код, который я придумал, который запускается при событии GridView1.SelectedIndexChanged.Недопустимые значения суммирования DataGrid
For Each GridViewRow In GridView2.Rows
Sum = Convert.ToDouble(row.Cells(3).Text)
Total = Sum + Total
lblTotal.Text = Total.ToString
Next
Теперь проблема возникает из-за этого. Если у меня есть значения rwo, скажем ... 2.00, сумма в порядке. Это даст мне 4. Но если я добавлю еще один Item, скажем, Item2, который имеет значение 2.30, он дает мне всего 4.60. Если я сначала добавлю элемент 2.30, а затем добавлю 2 элемента, он даст мне значение 4. Что происходит, и как может такая простая математика пойти не так: P! Я что-то упускаю? округление? Нужно что-то разобрать?
Полный код впереди
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
какой тип всего? – Paritosh
Его двойной. 'Dim Total As Double' –
Вы пробовали отлаживать его, чтобы прочитать Total каждый раз, когда он был преобразован в строку? Является ли lblTotal использованием автоматического форматирования строк? 'StringFormat =" {0: N0} "' возможно? –