2013-07-18 29 views
0

我將jpeg保存到文件系統,使用4個前導零或5個前導零,例如:0000085.jpeg或0000112.jpeg。在gridview中以jpeg顯示的前導零

但是jpeg只保存在數據庫中最後的數字,比如85或112, ,所以當我顯示JPEG時,我必須選擇0000或00000,所以有些不會顯示。我正在使用:

<asp:Image ID="responseImage" runat="server" Width="35px" ImageUrl='<%# IIf(Eval("AvatarPictureID") = "0", "http://ref-ology.com/Content/images/Thumbs/default-avatar_85.jpg", "http://ref-ology.com/Content/Images/Thumbs/0000" + Eval("AvatarPictureID") + "_150.jpeg")%>' /> 

帶有該圖像標記,只有112.jpeg會顯示,因爲它有4個零。

+3

對我來說聽起來好像你在添加擴展名之前將0000085保存爲數字而不是字符串。 – Maple

回答

2

檢查你的數據庫列是一個字符串類數據類型(varcharnvarchar等),而不是同樣數目的數據類型(intbigint等)。您需要將該名稱存儲爲字符串以保留前導零。

+0

我使用NOPCommerce,它是任何東西,但很容易處理。我試圖在他們的框架內工作,這是他們如何設置它。 – mlg74

1

其他答案是正確的。您應該完整地存儲文件名。但是,這將解決您的問題。

http://ref-ology.com/Content/Images/Thumbs/" + Eval("AvatarPictureID").ToString("0000000") + "_150.jpeg")%> 

編號:http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#Y3200

+0

我試過你的幫助,並得到這個錯誤,System.IndexOutOfRangeException:索引超出了數組的界限。 – mlg74

+0

聽起來像你的文化設置正在造成問題。嘗試一下_lotus的答案。它基本上是相同的解決方案,更易於閱讀。 – nickles80

+0

當我再次看,該文件實際上保存像這樣:0000085_150,0000120_150,0000111_150,以便每個7位數字後跟_150。我確信這有所作爲,爲什麼您的解決方案無法正常工作。但你有這個想法嗎? – mlg74

1

什麼時候會發生,你會在千元?我建議你使用pad功能

Eval("AvatarPictureID").PadLeft(7, "0") 
Eval("AvatarPictureID").PadLeft(7, "0") 
+0

我收到錯誤信息,找不到類型爲「DBNull」的公共成員'PadLeft'。「你知道那是什麼意思嗎?我做了這個...「'/> – mlg74

+0

它表示」PadLeft on DBNull not found「。這意味着AvatarPictureID爲空,而不是字符串/數字。確保您的查詢返回所有字符串或數字,而不是如果你想這樣做,則爲null –

+0

某些值爲空,這就是爲什麼我使用IIF的原因是DBNull! – mlg74