我有一张表BIKETYPE {BIKETYPEID,NAME,DESCRIPTION,IMAGE}。
IMAGE的数据类型为image
。我试图通过列表视图显示表。我能够看到除图像列以外的所有内容。
我的代码如下
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem,"BikeTypeId") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Name") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Description") %></td>
<td><asp:Image ImageUrl='<%# "Handler.ashx?BikeTypeId="+ Eval("image") %>' ID="Image" runat="server" /></td>
<td><asp:Button ID="Select" runat="server" Text="Select" CommandName="Select" /></td>
</tr>
</ItemTemplate>
在后面的代码中,我使用简单的绑定方法,如下所示
protected void bind()
{
adp = new SqlDataAdapter("Select * From BikeType", str);
ds = new DataSet();
adp.Fill(ds);
ListView1.DataSource = ds;
ListView1.DataBind();
ds.Clear();
adp.Dispose();
}
有什么建议吗?
答案 0 :(得分:1)
可以使用Genric Handler将图像显示到列表视图或任何其他控件中。 通过添加新项添加Genric处理程序&gt; Genric处理程序,然后参考下面的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace letsride
{
/// <summary>
/// Summary description for Handler1
/// </summary>
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
int id = int.Parse(context.Request.QueryString["b_id"]);
string constr = ConfigurationManager.ConnectionStrings["bikewebConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "Select image from Biketype where BikeTypeId=@id";
cmd.Parameters.AddWithValue("id", id);
object img = cmd.ExecuteScalar();
try
{
context.Response.BinaryWrite((byte[])img);
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
在您的Web窗体中使用图像
<asp:Image ID="i" runat="server" ImageUrl='<%# "Handler.ashx?b_id=" + Eval("BikeTypeId") %> ' /></td>
BikeTypeID是数据库中表的ID 另请参阅http://makhaai.blogspot.com.au/2010/11/image-handling-in-aspnet-part-1.html