2013-07-18 73 views
0

我是綁定到datalist的圖像。將數據庫中的圖像綁定到數據列表

我的imagename是在數據庫中,我正在接受它並希望將它綁定到datalist。

我曾嘗試以下操作:

<asp:DataList ID="dlImages" runat="server"> 
      <ItemTemplate> 
       <asp:ImageButton ID="ImageButton1" Height="200px" Width="200px" 
    ImageUrl='<%# Bind ("PageName","D:\Sagar\Kinston\WebSite\ScreenMasterImages\{0}") %>' runat="server" /> 
      </ItemTemplate> 
     </asp:DataList> 

在頁面加載我已經界定它:

ds = gc.GetDataToListBinder("select DISTINCT PageOrderID,PageName from ScreenMaster order by PageOrderID") 
      dlImages.DataSource = ds.Tables(0) 
      dlImages.DataBind() 

在上面的代碼中ds是我的數據集和gc.GetDataToListBinder(query)回報dataset

但圖像沒有顯示。

什麼可能是錯誤?

EDIT1:

<asp:ImageButton ID="ImageButton1" Height="200px" Width="200px" ImageUrl='<%#Server.HtmlDecode(Eval("PageName","D:\Sagar\Kinston\WebSite\ScreenMasterImages\{0}.jpg")) %>' runat="server" /> 
+0

你好。當你在瀏覽器中檢查你生成的HTML元素時,你可以看到至少圖像的名字是來自數據庫的? –

+0

@JhonatasKleinkauff是的,我可以看到它 –

+0

你有什麼道路?你已經嘗試過:「〜/ Images/{0}」 –

回答

1

花一分鐘讀此:

http://www.codeproject.com/Articles/142013/There-is-something-about-Paths-for-Asp-net-beginne

我認爲這將幫助你很多。

編輯:

對於空間的問題,我們來看一看:

Why does HttpUtility.UrlEncode(HttpUtility.UrlDecode("%20")) return + instead of %20?

基本上是:

ImageUrl='<%# Server.HtmlDecode(Bind("MyImage")) %>' 

但我建議您將您的圖像名稱在db中沒有空格。

EDIT2:

ImageUrl='<%# Eval("MyImage") %>' 

ImageUrl='<%# Server.HtmlDecode(Eval("MyImage")) %>' 
+0

我只是整理了不同的東西,現在我的問題仍然是,當我從數據庫中獲取imagename並寫入它imageurl給路徑,如果有imagename之間的空間,然後它添加%20,例如。如果我的圖像名稱是「API路徑」,它顯示我D:\ Sagar \ Kinston \ WebSite \ ScreenMasterImages \ API%20path.jpg –

+0

它沒有給我錯誤,但現在它開始給我錯誤:name bind not declared –

+0

@ MNS對不起,看到我的第二個編輯! –

1
<asp:DataList ID="DataList1" runat="server" RepeatColumns="3" 
            RepeatDirection="Horizontal" CellPadding="2" 
            CellSpacing="2" 
            UseAccessibleHeader="True" > 
            <ItemTemplate> 
            <asp:ImageButton Width="120" Height="120" ID="Image1" ImageUrl='<%# Eval("Imgpath", "") %>' runat="server" /> 
     </asp:Datalist> 



    .CS 

    SqlConnection con; 
    SqlCommand cmd; 
    string strCon = "Connection String"; 
    SqlDataAdapter da; 

    protected void AlldataImg() 
     { 
      DataTable dt = new DataTable(); 
      string strQuery = "select code,imgpath from SA_Stock order by Code"; 
      cmd = new SqlCommand(strQuery); 
      con = new SqlConnection(strCon); 
      da = new SqlDataAdapter(); 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = con; 

      try 
      { 
       con.Open(); 
       da.SelectCommand = cmd; 
       da.Fill(dt); 
       DataList1.DataSource = dt; 
       DataList1.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
      finally 
      { 
       con.Close(); 
       da.Dispose(); 
       con.Dispose(); 
      } 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
       AlldataImg(); 
    } 

    Put Image Path in database too so that image will appear.. 
1
protected void DataListPosts_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    try 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      DataRowView dr = (DataRowView)e.Item.DataItem; 
      Image ImageData = (Image)e.Item.FindControl("ImageData"); 
      if (dr.Row[4].ToString() != "NA") 
      { 
       ImageData.Visible = true; 
       ImageData.ImageUrl = @"ImgPost/" + dr.Row["ImgPath"].ToString(); 
      } 
      else 
       ImageData.Visible = false; 


     } 
    } 
    catch (Exception) 
    { } 
} 
1

它的一個老話題,但我認爲它可能是有用的人

首先從字符串

串sqlget讓您的數據=「從啓動器中選擇照片」;

並得到它的數據庫DSGET

然後做

dsget.Tables [0] .Columns.Add( 「Photopath」 的typeof(字符串));

for (int i = 0; i < dsget.Tables[0].Rows.Count; i++) 
    { 
     if (dsget.Tables[0].Rows[i]["Photo"].ToString() != null && dsget.Tables[0].Rows[i]["Photo"].ToString() != "") 
     { 
      var data = (Byte[])(dsget.Tables[0].Rows[i]["Photo"]); 
      var stream = new MemoryStream(data); 
      System.IO.BinaryReader br = new System.IO.BinaryReader(stream); 
      FileBytes = br.ReadBytes((Int32)stream.Length); 
      string base64String = Convert.ToBase64String(FileBytes, 0, FileBytes.Length); 
      dsget.Tables[0].Rows[i]["Photopath"] = "data:image/png;base64," + base64String; 
     } 
    } 

    DataList1.DataSource = dsget.Tables[0]; 
    DataList1.DataBind(); 

在ASP文件中寫入以下的事情

+0

相關問題