Wednesday, 20 June 2012

Show Gridview image in pop div on button click



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Show Gridview Images with Lightbox effect</title>
    <style type="text/css">
        .Gridview
        {
            font-family: Verdana;
            font-size: 10pt;
            font-weight: normal;
            color: black;
        }
   
        .white_content
        {
            display: none;
            position: absolute;
            top: 15%;
            left: 30%;
            width: 25%;
            padding: 0px;
            border: 0px solid #a6c25c;
            background-color: white;
            z-index: 1002;
            overflow: auto;
        }
        .headertext
        {
            font-family: Arial, Helvetica, sans-serif;
            font-size: 14px;
            color: #f19a19;
            font-weight: bold;
        }
    </style>
    <script type="text/javascript">
        function ShowImages() {
            document.getElementById('light').style.display = 'block';
            document.getElementById('fade').style.display = 'block'
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div align="center">
        <asp:FileUpload ID="fileuploadimages" runat="server" />
        <br />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
        <asp:Label ID="lblMessage" runat="server"></asp:Label>
    </div>
    <div align="center">
        <asp:GridView runat="server" ID="gvImages" AutoGenerateColumns="false" CssClass="Gridview" Width="500px"
            HeaderStyle-BackColor="#61A6F8" DataKeyNames="ImageName">
            <Columns>
                <asp:BoundField DataField="ID" HeaderText="ID" />
                <%--<asp:BoundField DataField="ImageName" HeaderText="Image Name" />--%>
                 <asp:TemplateField HeaderText="Image Name">
                    <ItemTemplate>
                        <asp:Label ID="LblImageName" runat="server" Text='<%#Eval("ImageName") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Image">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgbtn" runat="server" ImageUrl='<%#Eval("ImagePath") %>' OnClick="imgbtn_Click"
                            Style="height: 50px; width: 50px;" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    <div id="light" class="white_content">
        <table cellpadding="0" cellspacing="0" border="0" style="background-color: #a6c25c;"
            width="100%" >
            <tr>
                <td height="16px">
                    <a href="javascript:void(0)" onclick="document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">
                       close</a>
                </td>
            </tr>
            <tr>
                <td style="padding-left: 16px; padding-right: 16px; padding-bottom: 16px">
                    <table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color: #fff"
                        width="100%">
                        <tr>
                            <td align="center" colspan="2" class="headertext">
                                <asp:Label ID="LblDiaplayImageName" runat="server"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td align="center">
                                <asp:Image ID="imglightbox" runat="server" />
                            </td>
                        </tr>
                        <tr>
                            <td height="10px">
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
        <div align="center" class=" headertext">
            <asp:Label ID="txtlbl" runat="server"></asp:Label></div>
    </div>
 
    </form>
</body>
</html>


========================================================================
C# Code





using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page 
{
    string strSQlQuery = "";
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            { BindGrid(); }
        }
        catch (Exception ex)
        { lblMessage.Text = "Page_Load():"+ex.Message; }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            //Get Filename from fileupload control
           
            string filename = Path.GetFileName(fileuploadimages.PostedFile.FileName);
            //Save images into Images folder
            fileuploadimages.SaveAs(Server.MapPath("Images/" + filename));
            //Getting dbconnection from web.config connectionstring
            //Open the database connection
            con.Open();
            //Query to insert images path and name into database
            SqlCommand cmd = new SqlCommand("Insert into ImagesPath(ImageName,ImagePath) values(@ImageName,@ImagePath)", con);
            //Passing parameters to query
            cmd.Parameters.AddWithValue("@ImageName", filename);
            cmd.Parameters.AddWithValue("@ImagePath", "Images/" + filename);
            cmd.ExecuteNonQuery();
            //Close dbconnection
            con.Close();
           
           
        }
        catch (Exception ex)
        { lblMessage.Text = "btnSubmit_Click():" + ex.Message; }
    }
    protected void imgbtn_Click(object sender, EventArgs e)
    {
        try
        {
            ImageButton imgbtn = sender as ImageButton;
            GridViewRow gvrow = imgbtn.NamingContainer as GridViewRow;


            Label LblImageName = (Label)gvrow.FindControl("LblImageName");
            LblDiaplayImageName.Text = LblImageName.Text;
            //Find Image button in gridview

            ImageButton imgbtntxt = (ImageButton)gvrow.FindControl("imgbtn");
            //Assign imagebutton url to image field in lightbox
            imglightbox.ImageUrl = imgbtn.ImageUrl;
            ScriptManager.RegisterStartupScript(Page, typeof(Page), "ShowValidation", "javascript:ShowImages();", true);
        }
        catch (Exception ex)
        { lblMessage.Text = "imgbtn_Click():" + ex.Message; }
    }

    private void BindGrid()
    {
        DataSet DsetShowImage = new DataSet();
       
        try
        {
            strSQlQuery = "SELECT * FROM ImagesPath";
            SqlDataAdapter Dadp = new SqlDataAdapter(strSQlQuery, con);
            Dadp.Fill(DsetShowImage);
            gvImages.DataSource = DsetShowImage.Tables[0];
            gvImages.DataBind();
          

        }
        catch (Exception ex)
        { lblMessage.Text = "BindGrid" + ex.Message; }
    
    }
}


============================================================================