2010-03-24 37 views
0

獲得的圖像,我有雜耍阿賈克斯,我希望它得到的圖像形成數據庫 我使用SQL Server 2000和我有二進制圖像阿賈克斯幻燈片從數據庫

這是我的代碼從數據庫中選擇圖像

public class SlidShow : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     using (SqlConnection con = Connection.GetConnection()) 
     { 
      string Sql = "Select image from SlideShowImage Where Active=1 And [email protected]_Id"; 
      System.Data.SqlClient.SqlCommand com = new SqlCommand(Sql, con); 
      com.CommandType= System.Data.CommandType.Text; 
      com.Parameters.Add(Parameter.NewInt("@Hig_Id", context.Request.QueryString["Hig_ID"].ToString())); 

      System.Data.SqlClient.SqlDataReader dr = com.ExecuteReader(); 
      if (dr.Read() && dr != null) 
      { 

       Byte[] bytes1 = (Byte[])dr["image"]; 

       context.Response.BinaryWrite(bytes1); 

       dr.Close(); 
      } 
     } 
    } 

[System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 

    public static AjaxControlToolkit.Slide[] GetSlides() 
    { 


     return new AjaxControlToolkit.Slide[] { 
      new AjaxControlToolkit.Slide("images/sharp_highlight_ref_img.jpg", "", ""), 
      new AjaxControlToolkit.Slide("images/products_fridg_img.jpg", "", ""), 
      new AjaxControlToolkit.Slide("images/sharp_home_highlight_img.jpg", "", "") 


     }; 

    } 
} 
+1

請編輯並添加一個問題(他們是以'?'結尾的問題),並且您還應該向我們展示一些代碼,讓我們知道您在做什麼。最好指出你已經嘗試了什麼,以及你收到了什麼錯誤。 – 2010-03-24 09:38:12

回答

1

我會做圖像加載爲HttpHandler,它必須是在web.config中registred。您並不需要Ajax來加載圖片。您的JavaScript代碼必須更改img標記的src屬性才能顯示新圖片。

下面是一個http處理程序的示例,它使用名爲id的查詢參數從MS SQL數據庫加載博客。

public class IISHandler1 : IHttpHandler 
{ 
    public bool IsReusable 
    { 
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     int theID; 
     if (!int.TryParse(context.Request.QueryString["id"], out theID)) 
      throw new ArgumentException("No parameter specified"); 

     context.Response.ContentType = "image/jpeg"; // or gif/png depending on what type of image you have 
     Stream strm = DisplayImage(theID); 
     byte[] buffer = new byte[2048]; 
     int byteSeq = strm.Read(buffer, 0, 2048); 
     while (byteSeq > 0) 
     { 
      context.Response.OutputStream.Write(buffer, 0, byteSeq); 
      byteSeq = strm.Read(buffer, 0, 2048); 
     } 
    } 

    public Stream DisplayImage(int theID) 
    { 
     try 
     { 
      SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString()); 
      string sql = "SELECT image FROM Table1 WHERE id = @ID"; 
      using (SqlCommand cmd = new SqlCommand(sql, connection) { CommandType = CommandType.Text }) 
      { 
       cmd.Parameters.AddWithValue("@ID", theID); 
       connection.Open(); 
       object theImg = cmd.ExecuteScalar(); 
       return new MemoryStream((byte[]) theImg); 
      } 
     } 
     catch 
     { 
      return null; 
     } 
    } 
} 
+0

感謝您的關注,但如果您使用java代碼或全部示例進行分配。 – Myworld 2010-03-24 13:33:04

+0

我還不清楚你需要更多的幫助嗎?幻燈片放映中的圖片網址必須由您在web.config中爲http處理註冊的內容觸發。例。註冊一個模式,如:/images/slide.ahx?id=。並在代碼中引用這樣的圖像:new AjaxControlToolkit.Slide(「images/slide.ahx?id = 1」..等 – 2010-03-24 17:56:29