Как округлить столбец в DataGridView VB.net

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Я делаю asp.net веб-страница с использованием VB.Net, который вычисляет годовую зарплату сотрудника.

У меня есть GridView, который отображает столбец со значениями типа double (они двойные в базе данных «пример: 66 556,91»).

Я хочу округлить значения этого столбца так, чтобы у меня было 66 557 вместо 66 556,91. Я проверил msdn и использовал {0:D} и {0:F0} в DataFormatString в gridview для редактирования столбцов, но значение не было изменено.

 <asp:BoundField DataField="C1" HeaderText="calculated taxes" ReadOnly="True" SortExpression="C1" DataFormatString="{0:F0}" />
  

Что вы предлагаете?

Комментарии:

1. Данные извлекаются из базы данных?

2. Да, данные извлекаются из базы данных MySQL @JaydipJ

Ответ №1:

Обновил вашу команду выбора следующим образом для столбца зарплаты, это выполнит операцию округления в конце базы данных.

 SELECT ROUND(SalaryColumnName,0)
  

Комментарии:

1. Я надеялся не использовать это, поскольку мой оператор sql довольно сложный, но время было не на моей стороне. Это сработало, спасибо!

Ответ №2:

Вы можете указать DataFormatString в вашем определении boundcolumn {0:f0}, которое будет округлять ваши значения до 0 знаков после запятой.

Входные значения

 1
2.2
3.323
66556.91
  

Форматированные значения
1
2
3
66557

Комментарии:

1. Я видел это, к сожалению, это не сработало, когда оно должно было работать

2. Вы точно уверены, что ваши исходные данные относятся к десятичному типу данных? Я запустил {0:f0} dataformatstring через тестовое веб-приложение, и оно сработало, как описано.

3. Извините, должен был упомянуть, что мой источник имеет двойной тип, а не десятичный, теперь это имеет смысл

Ответ №3:

 Module Module1
  Sub Main()
  ' Call Math.Round on this Double.
Dim before As Double = 123.45
Dim after1 As Double = Math.Round(before, 1, MidpointRounding.AwayFromZero)
Dim after2 As Double = Math.Round(before, 1, MidpointRounding.ToEven)
Dim after3 As Double = Math.Round(before)

Console.WriteLine(before)
Console.WriteLine(after1)
Console.WriteLine(after2)
Console.WriteLine(after3)
Console.WriteLine()

  ' Use on this Decimal.
Dim before2 As Decimal = 125.101
Dim after4 As Decimal = Math.Round(before2)
Dim after5 As Decimal = Math.Round(before2, 1)

Console.WriteLine(before2)
Console.WriteLine(after4)
Console.WriteLine(after5)
End Sub
End Module
  

 Output

123.45
123.5
123.4
123

125.101
125
125.1