-8

我正在尝试从数据库中检索图像并将其显示给 gridview。但它显示 .ashx 文件中的错误

SqlCommand command = new SqlCommand(
    "select Image from ImageStore where ImageID=" + imageid, connection); 
SqlDataReader dr = command.ExecuteReader(); dr.Read(); 
context.Response.BinaryWrite((Byte[])dr[0]);

'=' 附近的语法不正确

如何解决

4

2 回答 2

1

由于您尚未发布代码,因此假设您使用 .aspx 文件并且您已经渲染了 gridview 控件和所有内容。确保您已使用添加图像控制

<asp:Image ID="imgPhoto" runat="server" ImageUrl = '<%#"ImageHttpHandler.ashx?ProductID="+Eval("ProductID")%>'/>

HTTP 处理程序可以访问应用程序上下文。这包括请求用户的身份(如果已知)、应用程序状态和会话信息。当请求 HTTP 处理程序时,ASP.NET 调用相应处理程序的 ProcessRequest 方法。您在处理程序的 ProcessRequest 方法中编写的代码会创建一个响应,该响应会被发送回发出请求的浏览器。

在获取图像的方法中使用return stmt as

        return (Byte[])dtProductsPhoto.Rows[0][0];

确保您已使用在 Web.config 文件中注册处理程序

  <httpHandlers>
  <add verb="*" path="*ImageHttpHandler.ashx"
                  type="GridView.ImageHttpHandler,GridView" />

希望它有效...

于 2012-11-05T08:59:48.620 回答
0

做这样的事情:

if(imageid != null)
{
    SqlCommand command = new SqlCommand("
          select Image from ImageStore where ImageID=" + imageid, connection); 
    SqlDataReader dr = command.ExecuteReader();
    dr.Read();
    context.Response.BinaryWrite((Byte[])dr[0]);
}
else
{
    SqlCommand command = new SqlCommand("
          select Image from ImageStore where ImageID=0", connection); 
    SqlDataReader dr = command.ExecuteReader();
    dr.Read();
    context.Response.BinaryWrite((Byte[])dr[0]);
}
于 2012-11-05T09:27:01.747 回答