如果值有小数点,如何显示图像?

时间:2012-01-11 02:39:08

标签: asp.net vb.net visual-studio visual-studio-2010

基本上在我的aspx页面中,我有一个gridview,它将我数据库中的值显示为图像。因此,如果我的数据库表中的值为5,它将在gridview中显示为5个图像。即。(star.jpg star.jpg star.jpg star.jpg star.jpg)

代码:

Protected Function getrating(ByVal rate As Integer)
        Dim getrating As String
        getrating = ""
        For i = 1 To rate
            getrating = getrating + "<img src=""Images/star.jpg"" alt=""*"">"
        Next
        Return getrating
    End Function

到目前为止整个数字一直很好,但现在我将平均值添加到我的数据库中,所以任何带小数点的值(如4.6)都会给我错误

"Conversion from type 'DBNull' to type 'Integer' is not valid."

当值有小数点时,如何添加图像?

由于我的数据库中的字段的范围设置为数字1到5,所以如果值具有小数点,我喜欢显示另一个图像。即。 “3.5”将显示在gridview star.jpg,star.jpg,star.jpg,halfstar.jpg中。如果这有任何意义lol。

任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:1)

根据您的错误判断,您可能甚至不接受十进制值并在发生时插入NULL值。首先修复,确保结果不是DBNull,然后您可以对Double之类的小数类型进行更改:

Protected Function GetRating(ByVal rating As Double) As String
    Dim result As New System.Text.StringBuilder()

    While rating >= 1.0#
        result.Append("<img src=""Images/star.jpg"" alt=""*"">")
        rating -= 1.0#
    End While

    If rating > 0.0# Then _
        result.Append("<img src=""Images/halfstar.jpg"" alt=""1/2"">")

    Return result.ToString()
End Function

我也冒昧地使用StringBuilder而不是使用+连接字符串。

答案 1 :(得分:0)

您需要检查DBNull值(来自错误说明)。

If reader.Read() Then
  IF Not reader.IsDBNull(0) Then '1st column
    'If field type is decimal
     Dim decimalVar=reader.GetDecimal(0)
  End If
End If

答案 2 :(得分:0)

如果你想这样做,我真的建议使用一张包含所有星星的图像。所以该图像应该有5个统计信息,如:

enter image description here

在本演示中,我添加了宽度为120px,高度为24px的图像。然后你需要添加如下:

然后,当你想要展示你的星星时,你需要通过以下方法找出它的宽度:

DIV width = (Rate/5) * 120

所以例如2.5将是(2.5 / 5)* 120 = 60!然后你需要将DIV的宽度改为60,然后你将获得2.5等级!并将变成类似:

<div style="background-image:url(http://s.codeproject.com/script/Ratings/Images/stars-fill.png);width:60px;height:24px;">
</div>

这只是一个简单的方法,可以让您根据逻辑进行扩展和自定义。我希望这会有所帮助: - )