【问题标题】:How to display an image if the value has a decimal point?如果值有小数点,如何显示图像?
【发布时间】:2012-01-11 02:39:07
【问题描述】:

基本上,在我的 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,如果值有小数点,我希望它显示另一个图像。 IE。 "3.5" 将显示在 gridview star.jpg、star.jpg、star.jpg、halfstar.jpg 中。如果这有任何意义哈哈。

有人知道怎么做吗?

【问题讨论】:

  • 您是在问如何确定您是否有小数部分?您可以将该值乘以 10,然后检查模 10 的值是否为零。如果没有,你有一个小数部分。

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


【解决方案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,而不是用+ 连接字符串。

【讨论】:

    【解决方案2】:

    您需要检查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
    

    【讨论】:

      【解决方案3】:

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

      对于这个演示,我添加了一个宽度为 120 像素、高度为 24 像素的图像。然后你需要添加一个这样的:

      那么当你想显示你的星星时,你需要通过以下方法找出这个的宽度:

      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>
      

      这只是一个简单的方法,它会给你一个想法来扩展和定制你的逻辑。我希望这会有所帮助:-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-11
        • 2014-06-10
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多