目前使用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的错误。
我可以将这个值成功转换为标签中的整数的一些方法是什么?
答案 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的变量。工作!
谢谢大卫的指导!