2017-07-02 22 views
0

私はasp.netのコードビハインドで画像を表示しようとしています。残念ながら、それは何も表示されず、私は私と同様の問題を探してみましたが、私は本当に答えを見つけることができません。注意してください、私はまだこれの初心者です。ここでasp.net image not working

は私のaspxファイルのコードです:ASPXで

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"); 
    } 
} 
} 

<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ファイルのコードです.csファイルでは、brandImageというasp:ImageのIDにアクセスしようとしましたが、page_loadメソッドで入力すると、それを認識しません。だから何かやってみて、imageurlを設定しようとしました。これはpage_loadメソッドで作ったコードを見ることができます。それはイメージを表示していませんでした。

参考までに、このようなURLにイメージを連結しようとする理由もあります。 image.ImageUrl = "../Images/Guitar Brands /" +画像; |なぜなら私のデータベースには、jpgファイルが入っているイメージ列があるからです。

この点について助言してください。お気軽にソリューションを提案してください。 、

最初のイベントにアタッチ:それを実現するために

+0

これをItemDataBoundに実装する必要があります。 – hardkoded

+0

@kblok - 実際の例を親切に伝えることはできますか? – RockStar

+0

この画像から変更することができます.ImageUrl = "../Images/Guitar Brands /" +画像; Image.ImageUrl = "画像/ギターブランド/" +画像; –

答えて

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