Hi kats9993,
I have taken a reference from below articles and created a sample which full fill your requirement you need to modify the code according to your need.If you want to use in VB then you need to just change the ImageURL from "DisplayImagesCS.ashx" to "DisplayImagesVB.ashx".
Referred articles
SQL Records

HTML
<div>
<asp:DataList ID="DataList1" runat="server" RepeatColumns="2" CellPadding="4">
<ItemTemplate>
<table border="0" cellpadding="0" cellspacing="0" width="120px">
<tr>
<td align="center">
<asp:Image ToolTip="ASP Image Control" ID="Image" runat="server" ImageUrl='<%# string.Format("DisplayImagesCS.ashx?ImageID={0}", Eval("ID")) %>'
Height="100px" Width="100px"></asp:Image>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.rawgit.com/elevateweb/elevatezoom/master/jquery.elevateZoom-3.0.8.min.js"></script>
<script type="text/javascript">
$(function () {
$("[id*=Image]").elevateZoom({
cursor: 'pointer',
imageCrossfade: true,
loadingIcon: 'loading.gif'
});
});
</script>
</div>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataList1.DataSource = BindDataList();
DataList1.DataBind();
}
}
public DataTable BindDataList()
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand("SELECT ID FROM tblFiles", con);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
DisplayImagesCS.ashx
<%@ WebHandler Language="C#" Class="DisplayImages" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class DisplayImages : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString["ImageID"] != null)
{
string strQuery = "SELECT Name, ContentType, Data FROM tblFiles WHERE ID=@id";
string strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand(strQuery, con);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(context.Request.QueryString["ImageID"]);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt != null)
{
Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = dt.Rows[0]["ContentType"].ToString();
context.Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["Name"].ToString());
context.Response.BinaryWrite(bytes);
context.Response.Flush();
context.Response.End();
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
DataList1.DataSource = BindDataList()
DataList1.DataBind()
End If
End Sub
Public Function BindDataList() As DataTable
Dim dt As New DataTable()
Dim strConnString As [String] = System.Configuration.ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand("SELECT ID FROM tblFiles", con)
Dim sda As New SqlDataAdapter()
sda.SelectCommand = cmd
sda.Fill(dt)
Return dt
End Function
DisplayImagesVB.ashx
<%@ WebHandler Language="VB" Class="DisplayImagesVB" %>
Imports System
Imports System.Web
Imports System.Data.SqlClient
Imports System.Data
Public Class DisplayImagesVB : Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
If context.Request.QueryString("ImageID") IsNot Nothing Then
Dim strQuery As String = "SELECT Name, ContentType, Data FROM tblFiles WHERE ID=@id"
Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("constr").ConnectionString
Dim con As New SqlConnection(strConnString)
Dim cmd As New SqlCommand(strQuery, con)
cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(context.Request.QueryString("ImageID"))
Dim sda As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
sda.Fill(dt)
If dt IsNot Nothing Then
Dim bytes As [Byte]() = DirectCast(dt.Rows(0)("Data"), [Byte]())
context.Response.Buffer = True
context.Response.Charset = ""
context.Response.Cache.SetCacheability(HttpCacheability.NoCache)
context.Response.ContentType = dt.Rows(0)("ContentType").ToString()
context.Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows(0)("Name").ToString())
context.Response.BinaryWrite(bytes)
context.Response.Flush()
context.Response.[End]()
End If
End If
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Screenshot
