2012-01-11 75 views
-1

基本上我在我的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中。如果這有什麼意義大聲笑。

任何人都有一個想法如何做到這一點?

+0

你問如何確定,如果你有一個小數部分?您可以將值乘以10,然後檢查模10的值是否爲零。如果沒有,你有一個小數部分。 – kinakuta 2012-01-11 02:46:37

回答

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,而不是與+連接字符串的自由。

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 
0

如果你想這樣做,我真的建議使用一個包含所有星星的圖像。使圖像應該有5個統計,如:

enter image description here

對於這個演示中,我加入了圖像的寬度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> 

這僅僅是一個簡單的方法,這將給你一個想法,擴展和自定義您的邏輯。我希望這有助於:-)