using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

using Utilities;

using System.Data;

 

namespace Database

{

    public partial class ProductImageDisplay : System.Web.UI.Page

    {

        DBConnect objDB = new DBConnect();

        string strSQL;

 

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                strSQL = "SELECT DepartmentName, DepartmentNumber FROM Department ORDER BY DepartmentNumber";

                ddlDepartments.DataSource = objDB.GetDataSet(strSQL);

                ddlDepartments.DataTextField = "DepartmentName";

                ddlDepartments.DataValueField = "DepartmentNumber";

                ddlDepartments.DataBind();

            }

 

        }

 

        protected void ddlDepartments_SelectedIndexChanged(object sender, EventArgs e)

        {

            DataSet ds;

            strSQL = "SELECT Product.ProductNumber, Product.Description, Images.ImageData FROM Product " +

                     "INNER JOIN Images ON Images.ProductNumber = Product.ProductNumber " +

                     "WHERE DepartmentNumber = " + ddlDepartments.SelectedValue;

 

            ds = objDB.GetDataSet(strSQL);

            gvProducts.DataSource = ds;

            gvProducts.DataBind();

 

            // Go through each row in the GridView, get a reference to the image, and store the byte array in the ImageUrl field as

            // a base64 string that will be render into an image by the browser.

            for (int row = 0; row < gvProducts.Rows.Count; row++)

            {

                byte[] imageData = (byte[])ds.Tables[0].Rows[row]["ImageData"];

                Image productImage = (Image)gvProducts.Rows[row].FindControl("imgProduct");

                productImage.ImageUrl = "data:image/jpg;base64," + Convert.ToBase64String(imageData);

            }

        }

    }

}