将标签中的十进制转换为整数

时间:2011-03-28 21:36:25

标签: asp.net vb.net type-conversion

目前使用VS2008,VB.NET,SQL。

我有一个来自数据源的FormView,它获取了一些在SQL数据库中存储为Decimal的字段。

我从FormView中抓取字段:

Dim AvgTicketL As Label = CType(frmMerchantProfile.FindControl("F10Label"), Label) 

我需要获取此值,并将其转换为Integer,然后将其发送到API。我已经完成,测试和工作的API调用,但是我收到一个错误,因为当它获得此值时,API返回“必须是整数”错误。

到目前为止我尝试过:

Dim AvgTicketL As Label = CType(frmMerchantProfile.FindControl("F10Label"), Label)  
Dim AvgTicket1 As Integer      
AvgTicket1 = Double.Parse(AvgTicket.Text)  
Do something with AvgTicket1

我也尝试过Round the Value,然后将其转换并调用它 - 没有运气。

检查AvgTicket1的值(将其写入Label或Response.Write)显示“100”,其中数据库值为100.00。但显然,API仍然是100.00。我尝试过的任何其他转换方法都说明了Label无法转换为Integer的错误。

我可以将这个值成功转换为标签中的整数的一些方法是什么?

2 个答案:

答案 0 :(得分:2)

您的问题标题和问题文本指向两个不同的事物。

假设您想知道如何安全地转换从数据库中检索到的十进制值(可能是AvgTicketL的值),在调用API之前,您将执行以下操作:

创建数据类型为Integer的变量,并使用System.Int32.TryParse()将小数安全地转换为整数。然后传递该变量。 (代码来了)

Dim testInt as Integer = -1

If System.Int32.TryParse(AvgTicketL.Text, testInt) Then
      ' Do something with testInt - call the API using the value
Else 
   ' code to execute if the parse fails.
   ' This could be whatever you need the code to do if the value of AvgTicketL.Text can't be properly parsed into an Int value.
End If

答案 1 :(得分:0)

经过一番愚弄之后,我才能做到这一点......

我接受了大卫所说的一些内容,然后做了一个简单的调整 - 我不知道为什么我之前没有想到它!

Dim AvgTicketL As Label = CType(frmMerchantProfile.FindControl("F10Label"), Label)
Dim AvgTicketI As Integer = "-1"

我将第二个变量调暗为int,然后

AvgTicketI = CInt(AvgTicketL.Text)

从那里,我只是将AvgTicketI称为传递给API的变量。工作!

谢谢大卫的指导!