0

データベースから画像を呼び出す ajax スライドショーを作成したいと思います。

作業中のハンドラー ページがあります。このハンドラーは、ID に基づいて Image 列からバイトを取得し、そのバイトを画像としてブラウザーに送り返します。どうすればよいかわからないのは、画像をリクエストしてスライドショーを設定する方法です。

また、オートプレイのやり方も知りたいです。

これは私のハンドラです:

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Collections.Specialized;

public class Handler : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
    string id = context.Request.QueryString["imageID"]; //get the querystring value that was pass on the ImageURL
    if (id != null)
    {

        MemoryStream memoryStream = new MemoryStream();
        SqlConnection conn = new SqlConnection("Data Source=19-20\\sqlexpress;" + "Initial Catalog = mpsip; Integrated Security = SSPI");
        string sql = "SELECT * FROM Image WHERE imageID = @id";

        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.AddWithValue("@id", id);
        conn.Open();

        SqlDataReader reader = cmd.ExecuteReader();
        reader.Read();

        //Get Image Data
        byte[] file = (byte[])reader["Image"];

        reader.Close();
        conn.Close();
        memoryStream.Write(file, 0, file.Length);
        context.Response.Buffer = true;
        context.Response.BinaryWrite(file);
        memoryStream.Dispose();

    }
}

public bool IsReusable
{
    get
    {
        return false;
    }
}
}

これは背後にあるコードです

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI; 
using System.Web.UI.WebControls;
using AjaxControlToolkit;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

public partial class ImageGallery : System.Web.UI.Page
{
private static DataTable tblData = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection("Data Source=19-20\\sqlexpress;" + "Initial Catalog = mpsip; Integrated Security = SSPI");

    SqlCommand cmd = new SqlCommand("SELECT * FROM image" , conn);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    tblData = new DataTable();

    adapter.Fill(tblData);


    Slideshowextender.SlideShowServiceMethod = "Handler.ashx?imageID=" + Request.QueryString["imageID"];
    if (tblData.Rows.Count > 0)
    {
        Image2.ImageUrl = tblData.Rows[0]["image"].ToString();

    }
}
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static AjaxControlToolkit.Slide[] GetImage()
{
    AjaxControlToolkit.Slide[] slides = new AjaxControlToolkit.Slide[tblData.Rows.Count];
    for (int i = 0; i < tblData.Rows.Count; i++)
    {
        DataRow dr = tblData.Rows[i];
        slides[i] = new AjaxControlToolkit.Slide();
    }
    return slides;

}  

}

これは私のプレゼンテーションコードです:

<%@ Page Title="" Language="C#" MasterPageFile="~/MainMasterPage.master" AutoEventWireup="true" CodeFile="ImageGallery.aspx.cs" Inherits="ImageGallery" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<p>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <br />

    <br />
    <asp:Button runat="Server" ID="prevButton" Text="Prev" Font-Size="Medium" />  
<asp:Button runat="Server" ID="playButton" Text="Play" Font-Size="Medium" />  
<asp:Button runat="Server" ID="nextButton" Text="Next" Font-Size="Medium" /> 



            <asp:SlideShowExtender ID="Slideshowextender" runat="server" PreviousButtonID="Button1"
    NextButtonID="Button3" PlayButtonID="Button2" TargetControlID="Image2"
    SlideShowServiceMethod="GetImage" PlayInterval="5000" PlayButtonText="Play" 
        StopButtonText="Stop" UseContextKey="True"></asp:SlideShowExtender>

    <br />
</p>

4

1 に答える 1