使用转发器控件显示数据库C#中的图像

时间:2011-12-04 21:30:28

标签: c# asp.net

我有一个图书数据库(现在共有2本书),每本书都有一行名为“图像”的行,其中包含图像的名称。 例如。 cprog.jpeg和asm.jpeg

使用转发器,我可以显示书籍信息,如姓名,作者等。但我不知道如何显示图像。图像存储在图像文件夹中。

这是aspx的问题吗?因为,它显示书名和描述就好了。

<asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
 <%# DataBinder.Eval(Container.DataItem, "BookName") %>
 <hr>
 <%# DataBinder.Eval(Container.DataItem, "BookDescription") %>
 <td width="100px">
  <p align="left">


 <img src= '<%# DataBinder.Eval(Container.DataItem, "Image") %>.jpeg'  
 alt="" style="height:200px;width:200px;border:1px solid gray;"/>

  </td>
  </p>

       
               

背后的代码

String connectionString = "Data Source=" + Server.MapPath(@"~\App_Data\bookDB.db");
        String selectCommand = String.Format("Select * from Book where CategoryName = '{0}'", Request.QueryString);
        SQLiteConnection myConnection = new SQLiteConnection();
        myConnection.ConnectionString = connectionString;
        myConnection.Open();
        SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(selectCommand, myConnection);

        myConnection.Close();
        // DataSet ds = new DataSet();
        dataAdapter.Fill(ds2);


        DataTable table = new DataTable();
        dataAdapter.Fill(table);
        Repeater1.DataSource = table;
        Repeater1.DataBind();

有一次,当我运行项目时,破碎的图像出现了一秒钟,然后消失了。我花了最近2天试图得到这个没有用... 谢谢。

3 个答案:

答案 0 :(得分:2)

假设images文件夹是/images,添加文件夹名称并删除扩展名(已在问题中提到的数据库中)应显示图像:

<img src='/images/<%# DataBinder.Eval(Container.DataItem, "Image") %>'  
alt="" style="height:200px;width:200px;border:1px solid gray;"/>

如果这不能产生预期的结果,请检查html输出并将其与真实网址进行比较 - 有什么不同?

答案 1 :(得分:0)

您必须放入图像文件夹的路径,以便Web服务器知道从哪里提供图像:

<img src= 'images/<%# DataBinder.Eval(Container.DataItem, "Image") %>'  
 alt="" style="height:200px;width:200px;border:1px solid gray;"/>

此外,由于数据库中的图像名称已包含扩展名,因此必须将其从转发器绑定中删除。

基于上面的例子,将解析为:

<img src= 'images/cprog.jpeg' alt="" style="..."/>

答案 2 :(得分:0)

您可以使用此代码在asp.net页面上加载位图图像。

<img src="data:image/jpeg;base64,<%# ((string)Container.DataItem) %>" 
width="100" height="100"/>