Hey abualmazen,
Please refer below sample, And for modal popup refer below link.
HTML
C#
<asp:DataList runat="server" ID="dlCustomers" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Button Text='<%#Eval("Name") %>' runat="server" ID="btnid" OnClick="save" />
<asp:HiddenField Value='<%#Eval("CustomerId") %>' runat="server" ID="hfid" />
</ItemTemplate>
</asp:DataList>
<br />
<asp:DataList runat="server" ID="dlButtons" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:HiddenField Value='<%#Eval("id") %>' runat="server" ID="hfid1" />
<asp:ImageButton ID="img" ImageUrl='<%# "data:image/jpg;base64," + Convert.ToBase64String((byte[])Eval("Data")) %>'
runat="server" OnClick="getOnImageClick" />
</ItemTemplate>
</asp:DataList>
<asp:TextBox ID="txtCustomerId" runat="server" Visible="false" />
<asp:TextBox ID="txtName" runat="server" Visible="false" />
<asp:HiddenField ID="hf" runat="server" />
VB.Net
<asp:DataList runat="server" ID="dlCustomers" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Button Text='<%#Eval("Name") %>' runat="server" ID="btnid" OnClick="save" />
<asp:HiddenField Value='<%#Eval("CustomerId") %>' runat="server" ID="hfid" />
</ItemTemplate>
</asp:DataList>
<br />
<asp:DataList runat="server" ID="dlButtons" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:HiddenField Value='<%#Eval("id") %>' runat="server" ID="hfid1" />
<asp:ImageButton ID="img" ImageUrl='<%# "data:image/jpg;base64," + Convert.ToBase64String(CType(Eval("Data"), Byte())) %>'
runat="server" OnClick="getOnImageClick" />
</ItemTemplate>
</asp:DataList>
<asp:TextBox ID="txtCustomerId" runat="server" Visible="false" />
<asp:TextBox ID="txtName" runat="server" Visible="false" />
<asp:HiddenField ID="hf" runat="server" />
Namespaces
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
VB.Net
Imports System.Data.SqlClient
Imports System.Data
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT CustomerId, Name From Customers", con))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
this.dlCustomers.DataSource = dt;
this.dlCustomers.DataBind();
}
}
}
}
}
protected void save(object sender, EventArgs e)
{
Button btn = (sender) as Button;
DataListItem item = (DataListItem)btn.NamingContainer;
string id = ((HiddenField)item.FindControl("hfid")).Value;
DataTable dt = GetData(id);
DataTable dt1 = new DataTable();
dt1.Columns.Add("id");
dt1.Columns.Add("Data", typeof(byte[]));
ImageButton img = (ImageButton)item.FindControl("img");
for (int i = 0; i < dt.Rows.Count; i++)
{
dt1.Rows.Add(dt.Rows[i]["id"], dt.Rows[i]["Data"]);
}
dlButtons.DataSource = dt1;
dlButtons.DataBind();
}
private DataTable GetData(string id)
{
string constr = ConfigurationManager.ConnectionStrings["constr1"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT id, Name,Data From tblFiles WHERE id = @Id", con))
{
cmd.Parameters.AddWithValue("@Id", id);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
}
protected void getOnImageClick(object sender, ImageClickEventArgs e)
{
txtCustomerId.Visible = true;
txtName.Visible = true;
ImageButton imgbtn = (sender) as ImageButton;
DataListItem item = (DataListItem)imgbtn.NamingContainer;
string id = ((HiddenField)item.FindControl("hfid1")).Value;
DataTable dt = GetData(id);
txtCustomerId.Text = id.ToString();
txtName.Text = dt.Rows[0]["Name"].ToString();
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand("SELECT CustomerId, Name From Customers", con)
Using da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
Me.dlCustomers.DataSource = dt
Me.dlCustomers.DataBind()
End Using
End Using
End Using
End If
End Sub
Protected Sub save(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = TryCast((sender), Button)
Dim item As DataListItem = CType(btn.NamingContainer, DataListItem)
Dim id As String = (CType(item.FindControl("hfid"), HiddenField)).Value
Dim dt As DataTable = GetData(id)
Dim dt1 As DataTable = New DataTable()
dt1.Columns.Add("id")
dt1.Columns.Add("Data", GetType(Byte()))
Dim img As ImageButton = CType(item.FindControl("img"), ImageButton)
For i As Integer = 0 To dt.Rows.Count - 1
dt1.Rows.Add(dt.Rows(i)("id"), dt.Rows(i)("Data"))
Next
dlButtons.DataSource = dt1
dlButtons.DataBind()
End Sub
Private Function GetData(ByVal id As String) As DataTable
Dim constr As String = ConfigurationManager.ConnectionStrings("constr1").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand("SELECT id, Name,Data From tblFiles WHERE id = @Id", con)
cmd.Parameters.AddWithValue("@Id", id)
Using da As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
da.Fill(dt)
Return dt
End Using
End Using
End Using
End Function
Protected Sub getOnImageClick(ByVal sender As Object, ByVal e As ImageClickEventArgs)
txtCustomerId.Visible = True
txtName.Visible = True
Dim imgbtn As ImageButton = TryCast((sender), ImageButton)
Dim item As DataListItem = CType(imgbtn.NamingContainer, DataListItem)
Dim id As String = (CType(item.FindControl("hfid1"), HiddenField)).Value
Dim dt As DataTable = GetData(id)
txtCustomerId.Text = id.ToString()
txtName.Text = dt.Rows(0)("Name").ToString()
End Sub
Screenshot
