1

我在ListView的每個視圖中顯示圖像。我希望圖像在水平方向以及在一個方框中垂直居中。我的代碼如下:未顯示樣式屬性

Protected Sub MembersLV_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles MembersLV.ItemDataBound 
     If e.Item.ItemType = ListViewItemType.DataItem Then 
      Dim LogoImage As System.Web.UI.WebControls.Image = e.Item.FindControl("LogoImage") 
      Dim LogoLink As HtmlControl = e.Item.FindControl("LogoLink") 
      Dim di As ListViewDataItem = DirectCast(e.Item, ListViewDataItem) 
      Dim ImageFileName As String = di.DataItem("FileName") 

      Dim FilePath As String = String.Format("/Uploads/MembersDirectory/w125h85/{0}", ImageFileName) 
      If File.Exists(Server.MapPath(FilePath)) Then 
       LogoImage.ImageUrl = FilePath 

       Dim BoxHeight As Integer = 101 
       Dim BoxWidth As Integer = 138 

       Dim B As New Bitmap(Server.MapPath(FilePath)) 
       Dim BHeight As Integer = B.Height 
       Dim BWidth As Integer = B.Width 

       Dim PaddingTop As Integer = Math.Ceiling(BoxHeight - BHeight)/2 
       Dim PaddingLeft As Integer = Math.Ceiling(BoxWidth - BWidth)/2 

       LogoLink.Attributes.Add("style", String.Format("padding: {0} 0 0 {1};", PaddingTop, PaddingLeft)) 
      End If 
     End If 
    End Sub 

我簡單地計算所需的頂部和左側圖像爲它爲中心的填充量,然後添加填充作爲風格屬性到周圍的標籤。

在aspx文件的代碼如下:

<a href='<%#Eval("Website") %>' id="LogoLink" runat="server"> 
    <asp:Image ID="LogoImage" runat="server" AlternateText='<%#Eval("Name") %>' /> 
</a> 

當我運行這段代碼,不填充已應用於<a>標籤。所以我做了一個快速檢查,以確保PaddingTopPaddingLeft正在使用Response.Write正確計算。奇怪的是,這次我運行它時,style屬性正確顯示!但沒有Response.Write,沒有樣式屬性。

我在做什麼錯?

回答

1

我剛剛從這裏休息一會兒再來看看這個。花了5分鐘看着它,我突然意識到我沒有指定填充單位!

LogoLink.Attributes.Add("style", String.Format("padding: {0} 0 0 {1};", PaddingTop, PaddingLeft)) 

到:我已經從改變了代碼

LogoLink.Attributes.Add("style", String.Format("padding: {0}px 0 0 {1}px;", PaddingTop, PaddingLeft)) 

這就是現在的作品!此外,我發現style屬性實際上顯示在源代碼中(如果您查看頁面的源代碼),如果在Firebug中進行了檢查並將其從香味中拋出,它就不在那裏。我仍然不明白爲什麼添加Response.Write這一行意味着應用了style屬性,所以如果有人能夠解釋我有興趣知道爲什麼。