2017-07-02 65 views
0

我試圖通過asp.net代碼隱藏顯示圖像。不幸的是,它沒有顯示任何東西,我試圖尋找類似的問題,但我真的找不到答案。請注意,我仍然是這方面的初學者。asp.net圖像不工作

這裏是我的aspx文件的代碼:

<asp:Content ID='Content1' ContentPlaceHolderID='ContentPlaceHolder1' Runat='Server'> 

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <div class="one-third"> 
      <div> 
      <asp:LinkButton ID="linkButton" OnClick="Repeater1_OnClick" runat="server" CommandArgument='<%# Eval("brandId") %>'> 
       <asp:Image ID="brandImage" runat="server" height="250px" width="300px" /> 
      </asp:LinkButton> 
      </div> 

     </div> 
    </ItemTemplate> 

這裏是爲aspx.cs文件的代碼:

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Linq; 
using System.Text; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Pages_GuitarBrands : System.Web.UI.Page 
{ 

protected void Page_Load(object sender, RepeaterItemEventArgs e) 
{ 
    if (!IsPostBack) { 
     DataSet ds = GetData(); 
     Repeater1.DataSource = ds; 
     Repeater1.DataBind(); 

     Image image = e.Item.FindControl("image") as Image; 
     image.ImageUrl = "../Images/Guitar Brands/"+image; 
    } 

} 

private DataSet GetData() 
{ 
    string CS = ConfigurationManager.ConnectionStrings["musicStoreConnection"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM brand", con); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     return ds; 
    } 

} 

protected void Repeater1_OnClick(object sender, EventArgs e) 
{ 
    LinkButton link = (LinkButton)sender; 
    if (link != null) { 
     int id = int.Parse(link.CommandArgument); 
     string brandName = ConnectionClassBrands.GetBrandById(id); 
     ConnectionClassGuitarItems.guitarName = brandName; 
     Response.Redirect("~/Pages/GuitarItemsFront.aspx"); 
    } 
} 
} 

在ASPX .cs文件,我嘗試訪問asp:Image的ID,它是brandImage,但是當我在page_load方法中鍵入它時,它顯示doe沒有認出它。所以我試着做一些事情,並設置imageurl,你可以看到我在page_load方法中創建的代碼。它最終沒有顯示任何圖像。

此外,僅供參考,我嘗試將圖像連接到URL的原因如下 - > | image.ImageUrl =「../Images/Guitar Brands /」+ image; |是因爲在我的數據庫中,我有一個包含jpg文件的圖像列。

請就此事提出意見。隨意提出解決方案。

+0

你必須在ItemDataBound – hardkoded

+0

@kblok中實現 - 你能否提供一個實際的例子? – RockStar

+0

你可以改變這個image.ImageUrl =「../Images/Guitar Brands /」+ image; image.ImageUrl =「圖片/吉他品牌/」+ image; –

回答

1

實施了正確的方法是使用ItemDataBound事件:

首先,重視事件:

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="repeater_ItemDataBound"> 

然後在事件中,你只要找到你正在試圖做控制在Page_Load:

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     Image img = e.Item.FindControl("brandImage") as Image; 
     img.ImageUrl = "../Images/Guitar Brands/" + 
      ((DataRowView)e.Item.DataItem).Row["image"]; 
    } 

我認爲DataItem的是在方案中使用DataRowView的,如果它是不同的,讓我知道,我會改變的例子。

+1

是的這個解決方案的工作原理! – RockStar