-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ハンドラーは、アプリケーションコンテキストにアクセスできます。これには、要求しているユーザーのID(わかっている場合)、アプリケーションの状態、およびセッション情報が含まれます。HTTPハンドラーが要求されると、ASP.NETは適切なハンドラーのProcessRequestメソッドを呼び出します。ハンドラーのProcessRequestメソッドで記述したコードは、応答を作成し、それを要求元のブラウザーに送り返します。

次のように画像を取得するメソッドでreturnstmtを使用します

        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 に答える